回答

收藏

在同一文件夹中导入 go 文件

技术问答 技术问答 203 人阅读 | 0 人回复 | 2023-09-12

本地 我 go另一个 文件导入go 文件遇到困难。
9 E2 f  y. S* U$ t3 b$ E* p, `: e我的项目结构如下
( J' k" K+ b- w% b& S* i
    -samplego--pkg--src---github.com----xxxx-----a.go-----b.go--bin
    + C4 }* U* I' B- Q( V3 w4 Y
我在尝试 b.go 中导入 a.go。我试过以下,0 G/ `2 ^( f* e- H8 N2 N* N
    import "a"import "github.com/xxxx/a"
    3 M5 g/ u6 P- o* d
这些都不起作用..我知道我必须干预 GOPATH,但是我不能正确解决。目前我的 GOPATH 指向 samplego(/workspace/samplego)。我收到了以下错误
+ J6 x- d7 S, Z
    cannot find package "a" in any of:/usr/local/go/src/pkg/a (from $GOROOT)/workspace/samplego/src/a (from $GOPATH)& o. \/ Q! s0 d4 m- C3 Q+ n
另外,当这些源文件被导入另一个项目/模块时,GOPATH 是怎么工作的?那么本地进口会成为问题吗?在这种情况下,最好的做法是什么 -是否只有一个  模块go 文件(有相关测试)?# d; l3 }8 \5 A9 B
                                                               
! W* U- \# S* B& _    解决方案:                                                               
1 }' w9 Y. h4 h5 v9 r# e8 |                                                                目录中的任何数量的文件都是一个包;文件中声明的符号可用于其他文件,无需任何imports 或限定符。所有文件都需要package foo在顶部使用相同的声明(否则你会收到 的错误go build)。
+ Q% ?2 H$ j4 g: v你需要GOPATH设置在您的目录中pkg,src以及bin目录停留。这只是一个偏好问题,但通常是你所有的应用程序(有时候$HOME)使用工作区,而不是每个应用程序。
6 ~8 h6 k" s* Y/ W: I& ~通常,Github 路径将是github.com/username/reponame(不仅仅是github.com/xxxx)。所以如果你想拥有它main你最终可能会做另一个包workspace/src类似的事情* r  E. v: o. C8 Y
    github.com/  username/    reponame/       main.go   // package main,importing "github.com/username/reponame/b"      b/         b.go    // package b
    , @: h& L8 i& U( m% K
请注意,您总是使用完整github.com/...相对导入不允许在工作区域进行。如果您厌倦了输入路径,请使用它goimports. 如果你在用go run,是时候切换了go build:run处理多文件mains 很糟糕。我没有麻烦去测试,但我听说过)go run脏依赖不会重建。6 {" D7 X# G7 u4 T2 K
听起来你至少试过 GOPATH 设置为正确的东西,所以如果你仍然被卡住,它可能包括你如何设置环境变量(命令等),以及你的命令和错误。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则