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



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文件处于同一级别。应始终在导入语句中提供相对路径。

这样,您可以使用"事件控制器"文件夹下列出的任何文件。

相关内容

  • 没有找到相关文章

最新更新