Intro
我正在尝试将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作为操作系统
谢谢。
有几个问题:
- 导入包,而不是文件(如其他答案中所述(
- 文件绝对导入路径无效,因为错误状态。应用程序可以使用文件相对导入路径(路径以"./"开头(或相对于 Go 工作区的路径。 有关语法的信息,请参阅 go 命令文档。相对于 Go 工作区的导入路径是首选表单。
- 对包(及其相应的目录(使用小写名称是惯用的。问题中的骆驼案例名称是可行的,但最好顺其自然。
文档如何编写 Go 代码是一个很好的教程,介绍如何执行此操作。
下面介绍如何重新组织给定上述代码的代码。这假设 main.go 位于导入路径为"myapp"的包中。 将此导入路径更改为所需的任何路径。
-- main.go --
package main
import (
"log"
_ "myapp/controllers/event"
)
func main() {
log.Println("hello from main")
}
-- go.mod --
module myapp
-- controllers/event/eventController.go --
package event
import "log"
func init() {
log.Println("hello from controllers/event")
}
在 Go 操场上运行此示例。
不能导入文件。您可以导入包。因此,假设您的主要包是包"github.com/mypackage",那么您应该导入"github.com/mypackage/Controllers/Event"。
Go 支持包级导入。您可以通过将包添加到文件开头的 import 语句来导入包。
在你的情况下,你应该做这样的事情——
import (
"log"
"net/http"
"Controllers/Event/EventController"
)
此外,您应该从文件名中删除第一个"/"
_ /Controllers/Event/EventController.go" //problem here
因为您的控制器文件夹与Main.go文件处于同一级别。应始终在导入语句中提供相对路径。
这样,您可以使用"事件控制器"文件夹下列出的任何文件。