以下命令基于go版本1.15.3进行测试
基本命令
go help
go env
go version
交叉编译
# Windows下编译Linux
SET CGO_ENABLED=0
SET GOARCH=amd64
SET GOOS=linux
go build xx.go
go build
- go build 会利用go语言的并发特性提高编译速度
- 当编译包时,会自动忽略'_test.go'的测试文件。
常用参数 -o -i
-o 指定编译输出可执行文件名称
-i 会安装编译目标所依赖的包
# go build -o 指定编译输出的名称
# win下编译生成指定名称的可执行文件
go build -o custom.exe send.go
# 压缩编译后的体积
# go build -ldflags="-s -w" xxx.go
go install
用来安装指定的代码包以及他们的依赖包(安装编译后的结果文件到指定目录)
主要用来库和工具
- 编译包文件 无main包 将编译后的包文件放到 pkg 目录下($GOPATH/pkg)
- 编译生成可执行文件 有main包 将可执行文件放到 bin 目录($GOPATH/bin)
go get
借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装
分两步,下载源码包,执行 go install
gofmt 和 go fmt
go fmt 是 gofmt的简易封装
go fmt 即 gofmt -l -w
传入文件的话,会格式化这个文件。传入目录的话,会格式化该目录下的所有.go文件
// 常用go fmt
go fmt send.go
// gofmt 参数
usage: gofmt [flags] [path ...]
-cpuprofile string
write cpu profile to this file
-d display diffs instead of rewriting files
-e report all errors (not just the first 10 on different lines)
-l list files whose formatting differs from gofmt's
-r string
rewrite rule (e.g., 'a[b:len(a)] -> a[b:]')
-s simplify code
-w write result to (source) file instead of stdout
// go fmt 参数
usage: go fmt [-n] [-x] [packages]
Fmt runs the command 'gofmt -l -w' on the packages named
by the import paths. It prints the names of the files that are modified.
For more about gofmt, see 'go doc cmd/gofmt'.
For more about specifying packages, see 'go help packages'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
To run gofmt with specific options, run gofmt itself.
See also: go fix, go vet.
包管理 go mod
命令 | 说明 |
---|---|
download | download modules to local cache(下载依赖包) |
edit | edit go.mod from tools or scripts(编辑go.mod) |
graph | print module requirement graph (打印模块依赖图) |
init | initialize new module in current directory(在当前目录初始化mod) |
tidy | add missing and remove unused modules(拉取缺少的模块,移除不用的模块) |
vendor | make vendored copy of dependencies(将依赖复制到vendor下) |
verify | verify dependencies have expected content (验证依赖是否正确) |
why | explain why packages or modules are needed(解释为什么需要依赖) |
go help mod
go mod init xx (初始化)
go mod tidy (自动检测依赖,并且写入go.mod文件)
go test
# 获取帮助
go help test
# 默认读取当前目录下所有名称为 *_test.go的文件,并执行测试
go test
# 获取详细输出信息
go test -v
# -run 指定函数名称 测试指定函数
go test ./ -v -run TestParsePattern
go list
# 查看帮助
go help list
# 没有参数默认显示当前路径代码包的导入路径
# The default output shows the package import path:
go list (等同于 go list -f '{{.ImportPath}}')
# install path 安装目录
go list -f '{{.Target}}'
# -e 以容错模式加载和分析指定的代码包
go list -e -json .
go clean
执行go clean命令会删除掉执行其它命令时产生的一些文件和目录,包括
- 在使用go build命令时在当前代码包下生成的与包名同名或者与Go源码文件同名的可执行文件
- 在执行go test命令并加入-c标记时在当前代码包下生成的以包名加".test"后缀为名的文件
- 如果执行go clean命令时带有标记-i,则会同时删除安装当前代码包时所产生的结果文件 (删除go install安装的文件)
- 还有一些目录和文件是在编译Go或C源码文件时留在相应目录中的
# 清除关联的安装的包和可运行文件
go clean -i
# -n 把需要执行的清除命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的
go clean -i -n
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。