猿问

如何在开发过程中构建包?

我想在 上发布一个软件包。为了开发它,我创建了以下文件结构github.com/mylogin/mypackage


mypackage/

├─ mypackage.go

├─ go.mod  // used to be mypackage.mod by mistake

├─ tests/

│  ├─ firsttest_test.go

│  ├─ secondtest_test.go


mypackage.go将具有一个函数 (mypackage(...))


我的包装.mod目前是go.mod


module github.com/mylogin/mypackage


go 1.17

我的问题:在编写测试时,我需要导入:mypackage


一方面,我无法导入,因为它还没有github.com/mylogin/mypackage

另一方面,我应该导入,因为它最终是其他人(或操作)复制测试的方式。github.com/mylogin/mypackage

我怎样才能摆脱这种矛盾呢?我的文件的正确布局应该是什么?


Cats萌萌
浏览 108回答 2
2回答

红糖糍粑

mypackage.mod目前必须将该文件称为 。Go 工具链将忽略任何其他名称。go.mod一方面,我无法导入,因为它还没有github.com/mylogin/mypackage这实际上并不重要。如果你有一个文件(请参阅上面关于更正文件名的注释),Go知道在发出网络请求之前首先要考虑这个问题。这意味着它将在项目的顶层找到,并意识到您当前的项目就是该模块,并使用自己。go.modgo.mod

慕无忌1623718

一方面,我无法导入,因为它还没有github.com/mylogin/mypackage可以,因为它是同一模块中的包。import "github.com/mylogin/mypackage"如果由于某种原因而无法正常工作,则文件中的指令或文件中的语句中可能存在拼写错误。modulego.modimport_test.go也就是说,通常 测试将与它自己位于同一目录中:github.com/mylogin/mypackagemypackagemypackage/ ├─ go.mod ├─ mypackage.go ├─ firsttest_test.go ├─ secondtest_test.go如果要从外部用户的角度测试包的 API,可以声明文件而不是 。_test.gopackage mypackage_testpackage mypackage(有关更多详细信息,请参阅辅助测试。
随时随地看视频慕课网APP

相关分类

Go
我要回答