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

从父目录的相对导入

从父目录的相对导入

Go
慕工程0101907 2021-05-06 18:01:59
如何从父目录进行相对导入?来自meme/cmd/meme:import "../../../meme"这给出了一个模棱两可的错误:matt@stanley:~/gopath/src/bitbucket.org/anacrolix/meme/cmd/meme$ go get bitbucket.org/anacrolix/meme/cmd/memecan't load package: /home/matt/gopath/src/bitbucket.org/anacrolix/meme/cmd/meme/main.go:8:2: local import "../../../meme" in non-local package matt@stanley:~/gopath/src/bitbucket.org/anacrolix/meme/cmd/meme$ echo $GOPATH /home/matt/gopath如何从父目录本地导入?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

感谢您添加到您的问题。首先是一个答案,然后是一些解释。我建立了您的代码,

  1. 去获得,就像你拥有它一样。(我忽略了错误消息。)

  2. main.go如您所愿,将导入行设置回“ ../../../meme”。

  3. (注释掉一些包含未使用变量的代码。)

  4. 然后在梅梅/ CMD /米姆目录,要么go run main.go或者go build main.go工作。

刚才我说去安装的时候,我的评论是错误的。我应该说去建造。

但是,关键是go build单靠它是行不通的。您必须输入go build main.go。这是因为go命令不允许“非本地包中的本地导入”。没错,规范在这里无济于事。它不高兴地说:“ ImportPath的解释取决于实现。” 当前的实现行为是由CL 5787055设置的,其后在Go-nuts上进行了详细讨论

“本地”是指用文件系统相对路径指示。显然,以..开头的相对路径是本地的,所以窍门就是让go命令也将main视为本地包。键入时显然不会这么做,键入go build时却可以go build main.go


查看完整回答
反对 回复 2021-05-10
?
aluckdog

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

直接手动使用编译器,链接器...时,支持相对导入。“开始”(构建)工具不支持相同的工具(在某种程度上类似于Java)。


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 338 浏览
慕课专栏
更多

添加回答

举报

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