我在将本地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文件(带有相关测试)吗?
一个目录中的任何数量的文件都是一个软件包。在一个文件中声明的符号对其他文件可用,而无需任何import
s或限定符。所有文件package foo
的顶部确实需要相同的声明(否则您会从中得到一个错误go build
)。
你需要GOPATH
设置到你的目录pkg
,src
以及bin
目录驻留。这只是一个偏好问题,但是通常为您所有的应用程序(有时是$HOME
)只有一个工作区,而不是每个应用程序都有一个工作区。
通常,Github路径为github.com/username/reponame
(而不仅仅是github.com/xxxx
)。因此,如果您想拥有main
另一个包装,则可能最终会workspace/src
像
github.com/
username/
reponame/
main.go // package main, importing "github.com/username/reponame/b"
b/
b.go // package b
请注意,您始终使用完整github.com/...
路径导入:工作空间中不允许相对导入。如果您厌倦了键入路径,请使用goimports
。如果您不满意go run
,现在该切换到go build
:run
与多个文件main
打交道,并且我没有费心测试,但听说(这里来自Dave Cheney )go run
没有重建肮脏的依赖关系。
听起来您至少已尝试将GOPATH设置为正确的选项,所以如果您仍然遇到问题,则可能要确切说明如何设置环境变量(命令等)以及运行的命令以及发生的错误。这是有关如何在Linux / UNIX下进行设置(并使设置持久化)的说明,这是Go团队对工作区设置的建议。也许没有帮助,但请看一下,至少可以指出,如果您感到困惑,哪个部分会使您感到困惑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句