go中如何从当前目录导入文件

介绍

我正在尝试将我的导入EventController.go到我的main.go文件中。


目录:


├───Controllers

│    └───Event

│        └───EventController.go

├───Models

├───Routes

└ Main.go   

问题:

import (

    "log"

    "net/http"


    _ "/Controllers/Event/EventController.go" //problem here

)

错误 :cannot import absolute path


我阅读了一些文档,但问题是我发现我做得正确,尽管我了解了 $GOPATH 但我想使用本地目录。


我做错了什么以及这个错误是关于什么的


注意:我想补充一点,我正在使用 Windows 作为操作系统

谢谢。


FFIVE
浏览 168回答 3
3回答

慕虎7371278

有几个问题:导入的是包,而不是文件(如其他答案中所述)文件绝对导入路径无效,如错误所示。应用程序可以使用文件相对导入路径(路径以“./”开头)或相对于 Go 工作区的路径。相对于 Go 工作区的导入路径是首选形式。习惯上对包(及其相应的目录)使用小写名称。问题中的驼峰式命名是可行的,但最好顺其自然。以下是如何重新组织上面给出的代码。这假设 main.go 位于导入路径为“myapp”的包中。将此导入路径更改为您想要的任何路径。-- main.go --package mainimport (    "log"    _ "myapp/controllers/event")func main() {    log.Println("hello from main")}-- go.mod --module myapp-- controllers/event/eventController.go --package eventimport "log"func init() {    log.Println("hello from controllers/event")}在 Go Playground 上运行此示例。

三国纷争

您无法导入文件。您可以导入一个包。因此,假设您的 main 包是“github.com/mypackage”,那么您应该导入“github.com/mypackage/Controllers/Event”。

繁花不似锦

Go 支持包级导入。您可以通过将包添加到文件开头的导入语句来导入包。对于你的情况,你应该做这样的事情 -import (    "log"    "net/http"    "Controllers/Event/EventController")另外,您应该从文件名中删除第一个“/”_ /Controllers/Event/EventController.go" //problem here因为您的Controllers文件夹与Main.go文件位于同一级别。您应该始终在导入语句中给出相对路径。这样,您就可以使用EventController文件夹下列出的任何文件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go