我对golang的理解,链接和连接第三方库的系统有些难以理解。由于某种原因只能连接github,或者我没搞清楚。仍然到处都有一些关于包和模块的被破坏的术语。请解释什么是什么以及为什么需要它、链接的区别以及是否可以连接不是来自 github 的东西?请附上您的俄语来源。英语文学相当多,但一切似乎都与俄语翻译有些混乱。
我对golang的理解,链接和连接第三方库的系统有些难以理解。由于某种原因只能连接github,或者我没搞清楚。仍然到处都有一些关于包和模块的被破坏的术语。请解释什么是什么以及为什么需要它、链接的区别以及是否可以连接不是来自 github 的东西?请附上您的俄语来源。英语文学相当多,但一切似乎都与俄语翻译有些混乱。
模块是一个包树。模块名称设置在
go.mod包是位于同一目录中且具有相同 .go 指令的一组源 .go 文件
package。一个包的文件必须位于同一目录中。包的全名是根据模块名称和包含文件的目录的路径构建的。例如,
go.mod书面形式module example.org/mylib,example.org/mylib应该位于相对于go.mod.例如,在您的库的源代码树中,有
./cmd/root. 那么这些文件必须带有指令package root或package root_test. 这些文件的完整包名称将是example.org/mylib/cmd/root, 或example.org/mylib/cmd/root_test[1]。为了在 Google 中自动搜索包,他们提出了goproxy 协议。它 在 GitHub 中实现,因此放置在那里的任何模块都会被命令自动找到
go get,等等。go mod tidygo build但没有人限制你只能使用 github。例如,GitLab 提供了 goproxy 支持。您在服务器上部署 gitlab,设置域和代理 - 就完成了,
go get它开始查找具有您域名的模块。最坏的情况是,您可以在文件系统中部署第三方模块的源代码,并
go.mod使用以下命令编写依赖项replace:在这种情况下
go build,它根本不会上网,而是example.org/some/module从目录中获取模块的源代码../some_module_src[1] 包
example.org/mylib/cmd/root_test必须包含包的测试example.org/mylib/cmd/root