自带的主要有 build, clean, get, install, list, run, and test
run #
go run main.go
-mod
选项,go help modules
查看详细,-mod
在其他部分命令中也可指定。
- vendor
- mod
- readonly
get #
使用 @ 指定版本
go get github.com/go-playground/validator/v10
test #
测试用例要求 #
- 文件名须以
_test.go
结尾 - 函数名须以
Test
打头,并且形参为 (t *testing.T)
运行命令
// -v 打印 log
go test -v xlsx_test.go xlsx.go
go test ./...
参数 #
// 直接查看覆盖率
go test -cover
// 输出统计信息文件
go test -coverprofile=profile.out
// 也可以定义cover模式
go test -covermode=count -coverprofile=profile.out
// 查看每个函数的覆盖率
go tool cover -func=profile.out
// 在浏览器详细查看每行的测试覆盖情况
go tool cover -html=profile.out
-covermode
选项
- set: 每个语句是否执行?(默认)
- count: 每个语句执行了几次
- atomic: 类似于 count, 但表示的是并行程序中的精确计数
pprof 和火焰图 #
生成 profile 文件的两种方式
通过 pprof #
go tool pprof --seconds 25 http://localhost/debug/pprof/profile
通过 bench test #
go test -bench=".*" -cpuprofile=cpu.profile ./
生成文件后,查看分析结果
go tool pprof -http=:8081 cpu.profile
也可以直接通过 web 界面查看
go tool pprof -http=:6060 http://127.0.0.1:8080/debug/pprof/profile
env #
设置私有仓库 go1.13 以上有效
go env -w GOPRIVATE="*.luojilab.com"
go 1.13 以下
git config --global url."git@xxx.luojilab.com:".insteadOf "https://xxx.luojilab.com/"
参考 #
build #
CGO_ENABLED=0 GOOS=linux go build -mod vendor -a -ldflags "-extldflags '-f'" -o main
mod #
download #
tidy #
vendor #
replace #
环境变量 #
Example #
go env
GO111MODULE="auto"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/yindongliang/Library/Caches/go-build"
GOENV="/Users/yindongliang/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GONOPROXY="*.luojilab.com"
GONOSUMDB="*.luojilab.com"
GOOS="darwin"
GOPATH="/Users/yindongliang/go/go1.14.1/bin"
GOPRIVATE="*.luojilab.com"
GOPROXY="https://goproxy.cn"
GOROOT="/Users/yindongliang/go/go1.14.1"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/yindongliang/go/go1.14.1/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/yindongliang/github/golang/ants/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/tg/wm0sdf5x16xddmy4r63cs7fw0000gn/T/go-build097402637=/tmp/go-build -gno-record-gcc-switches -fno-common"
GO111MODULE #
文档 https://github.com/golang/go/wiki/Modules
vgo 就是后来的 go module
- GO111MODULE=off 无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包。
- GO111MODULE=on 模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖。
- GO111MODULE=auto 在 $GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持。
GOPATH #
~/go/bin
目录
GOROOT #
~/go
即 go 的安装路径,下面有bin,src,pkg等
GOOS 和 GOARCH #
参考 https://gist.github.com/asukakenji/f15ba7e588ac42795f421b48b8aede63
设置系统名称和架构平台。
打印 Go 支持的目标系统列表
go tool dist list