golang开发常用命令

本文介绍golang开发过程中的常用命令。

包管理

go mod init 				                      # 初始化包管理配置,这一步会在module根目录下生成go.mod文件
go mod tidy 				                      # 更新包管理配置go.mod(去掉无用module, 新增必要module)
go get -u github.com/hashicorp/memberlist         # 添加包依赖
go mod edit -replace github.com/hashicorp/memberlist => github.com/pilosa/memberlist@v0.1.4-0.20190415211605-f6512523c021                     # 替换依赖库。但是module中的代码扔可以原依赖库的方式使用新依赖库。

编译

go build                                # 编译当前目录所在package
go build -o <bin> main.go 		    # 编译代码并指定输出二进制文件
go build -gcflags "-N -l" main.go 	    # 编译时关闭内联优化

测试

go test ./...                      # 运行module下所有单测。一个module对应一个go.mod文件
go test . 	                       # 运行package下所有单测。一个package对应一个目录
go test -v . 			   		   # 添加verbose信息,会输出日志等信息
go test -run=`<regexp> `.          # 运行符合正则表达式的的单测
go test -bench -run=None           # 运行基准测试

调试

dlv exec <bin> -- arg1 arg2 ...		    # 调试运行binary文件
dlv test . 							    # 调试当前module的测试代码
dlv attach <pid>					    # 调试正在运行的进程
dlv core `<bin>` `<core>`				# 调试core文件

# 远程调试
dlv attach <pid> --headless --api-version=2 --log --listen=:8181  ## server端
dlv connect <server_host>:8181									  ## client端

调优

go tool pprof http://host:port/debug/pprof/profile  # 通过net/http/pprof采集profile并下载到本地
go tool pprof -<host>:<port> <profile_file>         # 通过浏览器查看profile.

总结

本文我们分别从golang工程的包管理 -> 编译 -> 测试 -> 调试 -> 调优几个阶段总结了一些常用命令。