go 安装与配置
安装
sudo pacman -S go
也可以使用goup安装器安装
配置
#编辑 env 文件
vim .config/go/env
添加下面内容
GO111MODULE=on #开启gomod
GOPATH=/angus/Go #设置gopath
GOPROXY=https://goproxy.cn,direct #设置goproxy(代理源)
查看环境变量
go env
# 查看gomod gopath goproxy是否设置正确
gopath
GOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录,所下载的包都保留在gopath指向的目录
goproxy源
# 1. 七牛 CDN
go env -w GOPROXY=https://goproxy.cn,direct
# 2. 阿里云
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
# 3. 官方
go env -w GOPROXY=https://goproxy.io,direct
常用命令
- 包管理
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 clean #删除编译生成的可执行文件
- 测试
# 读取源码目录下面名为 *_test.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 go install github.com/go-delve/delve/cmd/dlv@latest
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.