1. 前言
最近学到了一些Go语言开发时的小技巧,做下记录。
2. 提高下载速度
方法一:科学上网
方法二:配置代理,详情参考《Golang包管理工具》
1 | # export GOPROXY=https://goproxy.cn |
方法三:使用gopm
1 | go get -v github.com/gpmgo/gopm |
3. 编译安装软件
1 | go build golang.org/x/tools/cmd/goimports |
4. 自动格式化
Golang希望统一代码风格,因此推出了gofmt工具。gofmt可以格式化单个文件,也可以格式化整个目录下的所有go文件。
除了gofmt工具,go语言中还有一个go fmt命令,该命令是gofmt的简单封装。
在IDEA中,怎样使用gofmt呢?
1、菜单栏,IntelliJ IDEA,Preferences…。
2、Plugins,搜索File,找到File Watchers插件并安装。
3、Tools,File Watchers,添加或修改gofmt模版。
1 | File type:Go |
4、勾选Enabled。
保存源码时,就会执行代码格式化了。
5. 自动引入依赖包
参考上一节自动格式化,配置 goimports ,自动引入依赖包。
6. 查看文档
如果对一个包或者函数不熟悉,可以使用go doc命令查看文档。比如:
1 | go http.ListenAndServe |
如果想要看一个项目的帮助文档,可以使用godoc工具启动一个文档服务器。
1 | go get -v golang.org/x/tools/cmd/godoc |
7. 测试
Debugging Sucks! Testing Rocks!
Go语言支持三种测试:单元测试、性能测试和http测试,下面分别来看一下。
7.1. 单元测试
Go语言单元测试函数以Test为前缀,详情参考测试函数。
实际开发中推荐使用表格驱动测试,就是把测试数据和测试逻辑分开。比如:
1 | func TestShortFilename(t *testing.T) { |
在IDEA中查看代码覆盖率:
在单元测试函数左边,会出现一个三角箭头,点击它,选择 Run ‘Testxxx’ with Coverage,即可看到代码覆盖率。绿线代表覆盖到了,红线代表没有覆盖到。
也可以使用命令查看代码覆盖率:
1 | go test -coverprofile=c.out |
7.2. 性能测试
1、编写性能测试函数,以Benchmark为前缀,详情参考基准测试。
2、运行基准测试
1 | go test -bench . |
3、详细分析(文本)
1 | go test bench . -cpuprofile .out |
4、详细分析(图表)
1 | go tool pprof .out |
PS:需要安装graphviz,以便生成图表。
7.3. http测试
Go语言的http测试使用 net/http/httptest 包,测试方法可以分为两种:一种是使用假的Request/Response,速度快,测试粒度小,适用于测试函数和方法;另外一种是启动http服务器,速度慢,代码覆盖量更大,适用于测试和模拟后端接口。
先说第一种,使用假的Request/Response:
1、已知函数
1 | func HelloHandler(w http.ResponseWriter, r *http.Request) { |
2、测试代码
1 | import ( |
3、运行测试go test -v .
再说第二种,启动http服务器。
1、已知函数
1 | func HelloHandler(w http.ResponseWriter, r *http.Request) { |
2、测试代码
1 | import ( |
3、运行测试go test -v .