基本命令
- go mod init 初始化项目,生成go.mod文件,后面可加上参数给项目命名
- go mod download 根据go.mod文件下载所有依赖
- go mod tidy 整理所有依赖
- go mod graph 查看依赖关系
更改代理
go env -w GOPROXY=https://goproxy.cn,direct
可以添加多个代理,用英文逗号隔开,寻找模块时按照顺序查找,direct表示查找源头,如果代理处找不到,就到包的原始位置查找,例如github.com等。
go.mod文件
module github.com/xxx
go 1.21
require (
example.com/apple v0.1.2
example.com/banana v1.2.3 // indirect
)
exclude example.com/banana v1.2.4
replace example.com/apple v0.1.2 => example.com/fried v0.1.0
replace example.com/banana => example.com/fish
indirect 表示间接依赖,项目中没有直接import,但是在import的module中使用了。
go get
- go get 直接拉取不会更新
- go get -u 更新依赖
- go get xxx@latest 拉取最新版
- go get xxx@master 拉取master分支最新commit
- go get xxx@v0.0.1 拉取版本0.0.1 使用git tag实现
- go get xxx@sfhsfds 根据哈希值拉取
在拉取时,如果不给定版本,那么会根据拉取的module的仓库tag。如果发布过tag,则选择最新的tag,否则就找主分支的最新commit。
在主版本号为v0和v1的情况下,可以省略版本号,之后要加上版本号。
v1.0.0 ——github.com/xxx/xxx
v2.0.2 ——github.com/xxx/xxx/v2
语义化版本号
v1.2.3-pre
其中1是主版本号,表示大更新,api更改
2是次版本号,表示向下兼容的更新
3是修订好,指进行了fix
go list命令
go list [-f format] [-json] [-m] [list flags] [build flags] [packages]
go list -m -u all
-m 显示当前项目的所有依赖
-u 显示可以更新到的版本