登录
首页 >  Golang >  Go问答

从父目录相对导入

来源:Golang技术栈

时间:2023-03-05 09:08:28 367浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《从父目录相对导入》,这篇文章主要讲到golang等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

如何从父目录进行相对导入?

来自meme/cmd/meme

import "../../../meme"

这给出了一个模棱两可的错误:

matt@stanley:~/gopath/src/bitbucket.org/anacrolix/meme/cmd/meme$ go get bitbucket.org/anacrolix/meme/cmd/meme

can'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

如何从父目录本地导入?

正确答案

感谢您添加问题。首先是一个答案,然后是一些解释。我通过以下方式构建了您的代码

  1. 去拿,就像你拥有它一样。(我忽略了错误消息。)
  2. 如您所愿,将导入行设置main.go回“../../../meme”。
  3. (注释掉一些包含未使用变量的代码。)
  4. 然后在 meme/cmd/meme 目录中,go run main.go或者go build main.go工作。

当我说 go install 有效时,我之前的评论是错误的;我应该说去建造。

然而,关键是go build单独是行不通的。您必须键入go build main.go. 这是因为 go 命令不允许“在非本地包中进行本地导入”。你是对的,规范在这里没有什么帮助。它说,“ImportPath 的解释是依赖于实现的”。当前的实现行为是使用CL 5787055设置的,随后在 Go-nuts 上进行[了详细讨论。](https://groups.google.com/d/topic/golang- nuts/1XqcS8DuaNc/discussion)

“本地”表示用文件系统相对路径表示。显然,以 .. 开头的相对路径是本地的,所以诀窍就是让go命令也将 main 视为本地包。它显然在您键入时不会这样做go build,但在您键入时会这样做go build main.go

理论要掌握,实操不能落!以上关于《从父目录相对导入》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表