testing包提供了对Go包的自动测试支持。go test 命令会自动执行所以符合格式
func TestXXX(t *testing.T)
当带着 -bench=“.” ( 参数必须有!)来执行*go test命令的时候性能测试程序就会被顺序执行。
func BenchmarkXxx(b *testing.B)
执行 go test -bench=”.”
-benchmem 显示内存信息 go test -bench=. -benchmem a_test.go
测试某个方法:(指定某个方法名称)
go test -v . -test.run TestClient_V2ApkSandboxHistory
如何使用 go mod
简单使用
mkdir hello
cd hello
go mod init hello
# 此时会出现一个hello下会出现一个 go.mod 目录
# 需要下载 所有第三方包时 go mod download
# 下载第三包可以直接使用 go get need_pkg
# 下载好的依赖 和 版本 会加入到 go.mod 里面,
# 下载好的第三包 会放在到$GOPATH/pkg/mod 中
# 没有设置GOPATH的话 下载好的第三方包会放在~/go/pkg/mod
# 如果你想放在当前目前可以执行如下命令
go mod vendor
# 此时你的包就会出现在vendor下了,意思是将依赖包放在vendor中
go mod tidy
# 检测依赖的包,下载使用到的包,剔除未使用的包
关于依赖升级
go list -m -u all 来检查可以升级的package
go get -u 升级所有依赖
go get -u need-pack 升级指定的依赖
关于依赖打包
go build -ldflags="-s -w" -o app ./main.go
# -ldflags="-s -w" 压缩程序
github 拉取 他人含有go.mod的项目时,下载所有第三方包
go mod download
关于如何使用本地自定义包,需要现在本地引入的包目录下执行 go mod init modulename
使用require + replace 将包名替换为本地包
require GoTools/db/mysql v0.0.0
replace GoTools/db/mysql => "../GoTools/db/mysql"
配置拉取本地私有镜像:
需要配置~/.gitconfig
[url “git@w.src.corp.qihoo.net:”]
insteadOf = https://w.src.corp.qihoo.net/
git config --global url."git@w.src.corp.qihoo.net:".insteadOf https://w.src.corp.qihoo.net/
如果不成功,添加环境变量
go env -w GOPRIVATE=v.src.corp.qihoo.net
多个设置 *
go env -w GOPRIVATE="*.src.corp.qihoo.net"
执行 go install -x
如果是gitlab的三级目录:需要配置 ~/.netrc, 格式如下:
machine gitlab.com login 账号 password 密码或者访问令牌
例如:machine w.src.corp.qihoo.net login guomei password xxx
然后执行, go get -u xxxx
如果拉取过程中报错:connect: connection refused
则执行时清空代理配置,例如:
GOPROXY="" go get -insecure w.src.corp.qihoo.net/pubsec/microservice/interface-agent/pkg/model/common/netlab
阿里代理仓库
地址
https://mirrors.aliyun.com/goproxy/
导出环境变量
export GOPROXY=https://mirrors.aliyun.com/goproxy/