【发布时间】: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 带您通过一个示例模块演示其工作原理