【发布时间】:2022-04-29 22:11:57
【问题描述】:
刚开始学习 Go 模块。我有一个关于在同一个模块中导入本地包的问题。我正在查看的示例是这个 repo:
https://github.com/Azure/azure-service-bus-go
模块是module github.com/Azure/azure-service-bus-go。该模块中有一个单独的包,atom(但它本身不是模块)。
当主包中的文件导入 atom 时,它们会这样做:import "github.com/Azure/azure-service-bus-go/atom" -- 以 queue_manager.go 为例。
我不太明白 - GO 如何知道查看本地原子包,而不是说 Github 上的那个?让我感到困惑的是,作为被修改模块的一部分的东西被远程/绝对 URI 引用。是否可以保证,如果我修改本地磁盘上的文件并构建,我实际上引用的是最新版本,而不是已经推送的内容?
作为一个玩具练习,我尝试使用不存在的 Github URI 创建一个模块,而事实上go mod tidy 确实试图在 Github 上查找它,尽管实际上确实存在本地副本
【问题讨论】:
-
因为 go.mod 文件。 go.mod 文件包含模块的全名,因此构建系统知道不远程查找该模块中的包。为您的项目运行
go mod init。 -
How to Write Go Code 带您通过一个示例模块演示其工作原理
标签: go go-modules