为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
FFIVE 2023-07-31 10:59:29
介绍我正在尝试将我的导入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 作为操作系统谢谢。
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

有几个问题:

  • 导入的是包,而不是文件(如其他答案中所述)

  • 文件绝对导入路径无效,如错误所示。应用程序可以使用文件相对导入路径(路径以“./”开头)或相对于 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 Playground 上运行此示例



查看完整回答
反对 回复 2023-07-31
?
三国纷争

TA贡献1804条经验 获得超7个赞

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



查看完整回答
反对 回复 2023-07-31
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

Go 支持包级导入。您可以通过将包添加到文件开头的导入语句来导入包。


对于你的情况,你应该做这样的事情 -


import (

    "log"

    "net/http"


    "Controllers/Event/EventController"

)

另外,您应该从文件名中删除第一个“/”


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


因为您的Controllers文件夹与Main.go文件位于同一级别。您应该始终在导入语句中给出相对路径。


这样,您就可以使用EventController文件夹下列出的任何文件。


查看完整回答
反对 回复 2023-07-31
  • 3 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信