学了一阵子的go基本语法,发现对go工具的基础了解很浅,甚至对其用法作用的没有一个好的了解
go mod
golang 的包管理工具之一
module 是收集了所有关联的go包集合的一个版本管理
官方wiki
Quick Start
- Example
细节后面部分会介绍,这是简单的示例创建
在goPATH目录下执行
$ mkdir -p /tmp/scratchpad/repo
$ cd /tmp/scratchpad/repo
$ git init -q
$ git remote add origin https://github.com/my/repo
$ go mod init github.com/my/repo
go: creating new go.mod: module github.com/my/repo
写入文件hello.go
package main
import (
"fmt"
"rsc.io/quote"
)
func main() {
fmt.Println(quote.Hello())
}
EOF
- 编译运行
$ go build -o hello
$ ./hello
Hello, world.
查看go.mod文件,里面包含着你的依赖和对应版本
在执行go build or go test时 会自动添加你需要的依赖在go.mod中,并且下载依赖
- 当需要修改为确定的依赖时,可以使用
go get foo@v1.2.3(版本号)or go get foo@master
的形式去获取,或者直接修改go.mod中的版本号
常用的go命令
- go list -m all 显示所以利用的依赖和版本
- go list -u -m all 显示使用的依赖中有更新可升级项
- go get -u 依赖名 or -u=patch 补丁名 更新依赖或补丁到最新版
- go build ./… or go test ./… 在模块中编译(构建或测试)的所有包
- go mod tidy 整理依赖,清理所有不需要的依赖,添加所有需要的依赖
- go mod vendor 创建一个vendor目录
版本标识解释
Vx.y.z
- x:标识针对向后不兼容的修改,进行递增
- y:标识添加新特性,进行递增
- z:标识bug修复,进行递增