需要帮助来理解戈兰包和模块系统的混淆



老实说,Golang的包和模块系统似乎是我处理过的最不必要的复杂事情。我不知道是我不理解,还是缺乏关于这个主题的信息,或者只是一般的Golang。

我已经创建了一个Go项目,我还不想发布或上传到GitHub。它不在我设置的GOPATH内部,因为根据我对模块引入的理解,你可以在GOPATH之外对你的项目进行编码。项目布局如下

──── MyProject
├─── project
│    ├─── pkg1
│    │    └─── foo.go
│    ├─── pkg2
│    │    └─── bar.go
│    └─── go.mod
└─── test
└─── test.go

test.go中,我希望我能做一些类似import "project/pkg1"的事情,但我不明白如何让它发挥作用。即使我在项目中移动test.go并键入import "/pkg1",我也会得到Cannot import absolute path错误。

我真的不想一直在%GOPATH%/src中编写我所有的go项目,这样做似乎很愚蠢。

再说一遍,这可能只是我不理解。任何关于这方面的帮助,无论是教程或网站的链接,都将不胜感激。谢谢

如果你是go新手,我建议你使用go.mod和平面项目结构。使用实际代码进行测试。任何以_test.go为后缀的内容都不包括在内。

go.mod
foo.go
foo_test.go
bar.go
bar_test.go

如果这是一个库,请随意输入包名。

如果这是一个可执行应用程序,请将main设置为根程序包名称。

最新更新