Golang入门
互动教程
A Tour of Go
go mod
go mod
是 Go 语言中的模块管理工具,用于处理 Go 项目的依赖关系和版本控制。它和Maven比较相似。自 Go 1.11 起,Go 引入了模块管理以替代旧的 GOPATH
模式,使依赖管理更加方便和可靠。
go module最重要的是go.mod文件的定义,它用来标记一个module和它的依赖库以及依赖库的版本。会放在module的主文件夹下,一般以go.mod
命名。类似于Maven的pom.xml
文件
初始化go.mod
文件
1 | go mod init [module-path] |
如果你的项目需要发布到github上,那么module-path
一定要和仓库名对应。比如github.com/{username}/{reponame}
1 | module github.com/{username}/{reponame} |
- require:项目依赖的包
exclude:忽略指定版本的依赖包
replace:由于在国内访问golang.org/x的各个包都需要翻墙,你可以在go.mod中使用replace替换成github上对应的库。
incompatible
表示不兼容标识,假如其当前版本为v3.6.0,因为其Module名字未遵循Golang所推荐的风格,即Module名中附带版本信息,我们称这个Module为不规范的Module。 在使用上没有区别,如果是我们自己开发的module,需要从xxx.com/xxx
变到xxx.com/xxx/v2
indirect
是指间接依赖的包,比如 a module 使用了 b module,但b module的go.mod不完整,或者未启用 go module的话,会把未记录在b的go.mod中又依赖了的包作为间接依赖,放到a的go.mod文件里
下载依赖
1 | # 这个命令会下载指定路径的包或模块,并将其添加到`go.mod`文件中 |
添加缺少的模块并删除未使用的模块,一般用来更新 go.mod 和 go.sum 文件。
1 | go mod tidy |
其他的常用指令
1 | go mod download:手动触发下载依赖包到本地cache(默认为$GOPATH/pkg/mod目录) |
vendor
文件夹是一个包含了项目所有依赖的本地副本的目录。
# support: nacos, consul, apollo, zk, etcd3
type: file
type: nacos
nacos:
server-addr: 127.0.0.1:8848
group: 'SEATA_GROUP'
namespace: ''
dataId: 'seataServer.properties'