【发布时间】:2015-01-12 13:29:33
【问题描述】:
我在将本地 go 文件导入另一个 go 文件时遇到困难。
我的项目结构如下所示
-samplego
--pkg
--src
---github.com
----xxxx
-----a.go
-----b.go
--bin
我正在尝试在 b.go 中导入 a.go。我尝试了以下,
import "a"
import "github.com/xxxx/a"
这些都不起作用..我知道我必须干预 GOPATH,但我做错了。目前我的 GOPATH 指向 samplego(/workspace/samplego)。我收到以下错误
cannot find package "a" in any of:
/usr/local/go/src/pkg/a (from $GOROOT)
/workspace/samplego/src/a (from $GOPATH)
另外,当这些源文件被导入另一个项目/模块时,GOPATH 是如何工作的?那么本地进口会是一个问题吗?在这种情况下,最佳实践是什么 - 是否在模块中只有一个 go 文件(带有相关测试)?
【问题讨论】:
-
一个目录中的任意数量的文件从一开始就是同一个包的一部分。 (并且他们需要在顶部有相同的
package a声明。) -
谢谢@twotwotwo...你能告诉我如何解决上述问题吗?此外,当我们在一个包中有多个 go 文件时,导入是否应该遵循完整路径,例如。 github.com/xxxx/a 或者只是一个会做
-
对于 Go 模块,同目录下的文件仍然是同一个包的一部分,仍然需要具有相同的包名(例如,
package foo),仍然不需要直接导入每个其他。这个answer 更多地介绍了 Go 模块,包括如何在 Go 模块下的同一模块中导入包。