Golang Go语言中定义模块
Russ Cox 大神关于 vgo 的第 6 篇博文 : https://research.swtch.com/vgo-module
翻译见这里: https://lingchao.xin/post/vgo-module.html
Golang Go语言中定义模块
更多关于Golang Go语言中定义模块的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
现在看到你头像就知道 Cox 发文了
😄,主要是 Russ 一下子扔出来好几篇,我得一篇一篇来
楼主最近活跃在电报群和 v2ex/go
被你发现了?😄
internal 是特有的术语,好像不应该翻译为 “内部目录约定”
嗯 多谢指出
在Go语言中,定义模块主要是通过包(package)来实现的。Go语言的模块化设计是其核心特性之一,它帮助开发者更好地组织和管理代码。
-
包声明:每个Go源文件都以
package
关键字开头,后面跟着包名。这个包名用于在导入时引用该模块的代码。例如,如果你正在编写一个名为mathutils
的工具包,你的文件开头应该是package mathutils
。 -
导入包:在需要使用其他包的代码时,可以使用
import
关键字导入。例如,import "fmt"
会导入标准库中的fmt
包,允许你使用其中的格式化输入输出功能。 -
模块路径:在Go 1.11及更高版本中,引入了Go Modules来管理依赖。模块路径通常与项目的仓库地址相关,例如
github.com/user/repo
。你可以通过创建一个go.mod
文件来定义模块路径和依赖关系。这个文件是自动生成的,但你也可以手动编辑来指定模块版本。 -
公共和私有标识符:在Go中,以大写字母开头的标识符是导出的(即公共的),可以被其他包访问。以小写字母开头的标识符则是未导出的(即私有的),只能在本包内部访问。
-
构建和测试:使用
go build
命令可以构建模块,而go test
命令则可以运行模块中的测试代码。
通过合理使用包和模块,Go语言开发者可以创建出结构清晰、易于维护的代码库。