Golang — 命令行

自带的主要有 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 #

测试用例要求 #

  1. 文件名须以 _test.go 结尾
  2. 函数名须以 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/"

参考 #

  1. https://segmentfault.com/a/1190000021127791

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

GOARM #

参考 #

官方文档 https://golang.org/cmd/go/

本文共 597 字,上次修改于 Jan 5, 2024
相关标签: Go, Linux, Shell