1、go install
将编译的中间文件放在 GOPATH 的 pkg 目录下,将编译结果放在 GOPATH 的 bin 目录下。
注意:
go install 是建立在 GOPATH 上的,无法在独立的目录里使用 go install
GOPATH 下的 bin 目录放置的是使用 go install 生成的可执行文件,可执行文件的名称来自于编译时的包名
go install 输出目录始终为 GOPATH 下的 bin 目录,无法使用-o附加参数进行自定义
GOPATH 下的 pkg 目录放置的是编译期间的中间文件
2、go build
Go语言的编译速度非常快,Go 1.9 版本后默认利用 Go 语言的并发特性进行函数粒度的并发编译。
Go语言的程序编写基本以源码方式,无论是自己的代码还是第三方代码,并且以 GOPATH 作为工作目录和一套完整的工程目录规则。因此 Go 语言中日常编译时无须像 C++ 一样配置各种包含路径、链接库地址等。
Go语言中使用 go build 命令将源码编译为可执行文件。go build 有很多种编译方法,如无参数编译、文件列表编译、指定包编译等,使用这些方法都可以输出可执行文件。
-v 编译时显示包名
-p n 开启并发编译,默认情况下该值为 CPU 逻辑核数
-a 强制重新构建
-n 打印编译时会用到的所有命令,但不真正执行
-x 打印编译时会用到的所有命令
-race 开启竞态检测
3、go run
编译源码并执行源码main()函数(不会留下可以执行文件)
4、go get
远程拉取或更新代码包及依赖包
-v 显示操作流程的日志及信息,方便检查错误
-u 下载丢失的包,但不会更新已经存在的包
-d 只下载,不安装
-insecure 允许使用不安全的 HTTP 方式进行下载操作
5、go test
单元测试或性能测试
package test
import (
"testing"
)
func TestAdd(t *testing.T) {
str := ""
for i := 0; i < 100000; i++ {
str += "test"
}
}
go test -v -run TestAdd learn_test.go
=== RUN TestAdd
--- PASS: TestAdd (3.48s)
PASS
ok command-line-arguments 3.489s
6、go pprof
分析和定位性能问题,如 CPU 消耗、内存分配及阻塞分析
第三方图形化分析工具(Graphviz)
第三方性能分析包runtime.pprof