一.概述
二、常用命令具体介绍
- go build
编译命令:complie pakages and dependencies
- 跨平台编译:env GOOS=linux GOARCH=amd64 go build
指定目标平台,所编译出来的文件就是可以直接在目标平台上运行的二进制文件
附加参数 | 备 注 |
-v | 编译时显示包名 |
-p n | 开启并发编译,默认情况下该值为CPU逻辑核数 |
-a | 强制重新构建 |
-n | 打印编译时会用到的所有命令,但不真正执行 |
-x | 打印编译时会用到的所有命令 |
-race | 开启竞态检测 |
- go install
也是编译:complie and install pakages and dependencies
- 与build最大的区别:编译后会将输出文件打包成库放到pkg下,如果当前文件再被调用的话就不会再进行二次编译了,直接去pkg目录下取编译好的输出文件。
- 常用于本地打包编译的命令
- go install是建立在GOPATH上的,无法在独立的目录里使用go install
- GOPATH下的bin目录下放置的是go instll生成的可执行文件,可执行文件的名称来自于编译时的包名;go install输出目录始终为GOPATH的bin目录,无法用-o附加参数进行自定义
- GOPATH下的pkg目录放置的是编译期间的中间文件
- go get
download and install pakages and dependencies
- 用于获取go的第三方包,通常默认从git repo上pull最新的版本
- 常用命令如:go get –u github.com/go-sql-driver/mysql (从github上获取mysql的driver并安装至本地,-u表示获取最新的包)
附加参数 | 备 注 |
-v | 显示操作流程的日志及信息,方便检查错误 |
-u | 下载丢失的包,但不会更新已经存在的包 |
-d | 只下载不安装 |
-insecure | 允许使用不安全的HTTP方式进行下载 |
- go fmt
读作 go fmt ,gofmt (reformat) package sources
- 类似c中的lint,统一代码风格和排版,会把所有代码完全格式化为golang语言推荐的代码风格及格式
- go test
test packages
- 运行当前包目录下的tests
- 常用命令有:go test 、go test –v等;二者的区别:go test –v会把执行test过程中的详细信息(如某个test跑了多久)都打印出来
- go 的test文件一般为xx_test.go为文件名
- xxx的部分一般为xxx_test.go所要测试的代码文件名
go并没有特别要求xxx的部分必须是要测试的文件名
- go test –bench=. 进行benchmark测试(基准测试),Windows下写时-bench .应改写为-bench “.” ;
- 其他参数:设置测试时间-benchtime = 5s(测试时间) 显示内存分配情况-bench= Alloc -benchmem(指定只测试Benchmark_Alloc()函数)
- go run
go run xxx.go 编译后运行
三、性能测试工具
第三方图形化显示分析数据工具Graphviz
第三方性能分析github.com/pkg/profile (在系统包runtime.pprof的技术上进行便利性封装)