Go 的工具确实很棒,这也是我爱上 Go 的原因。在我们安装 Go 的时候,会默认安装很多重要的有用的工具。除此之外,你也可以自行安装一些你需要的其他工具,例如:golint,errcheck等等。
我们先从 Go 的标准工具说起吧!
go get
go getgo getgo install
go get github.com/golang/lint/golint
-u
-d
go build / go install
go installgo buildpackage maingo buildgo install$GOPATH/bin$GOPATHgo install$GOPATH/pkggo buildgo build -igo install$GOPATH/pkg
go buildGO111MODULE=offGO111MODULE=autoauto
go build
GOOS=windows GOARCH=amd64 go build github.com/mholt/caddy/caddy
-x
go build -x
WORK=/var/folders/2g/_fnx086940v6k_yt88fdtqw80000gn/T/go-build614085896
mkdir -p $WORK/github.com/plutov/go-snake-telnet/_obj/
mkdir -p $WORK/github.com/plutov/go-snake-telnet/_obj/exe/
...
-ldflags
go build -ldflags="-X main.Version 1.0.0"
go build -gcflagsgo tool compile -help
go test
这个命令有许多选项,但是我经常用的是:
-race-rungo test -run=FunctionName-bench-cpuprofile cpu.out-memprofile mem.out-v-cover
go list
它列出了由导入路径命名的包,每行一个。
go env
打印 Go 环境变量信息:
go env
GOARCH="amd64"
GOBIN="/Users/pltvs/go/bin"
...
go fmt
对我来说最有用的工具,因为他是在保存文件时运行的。它会根据 Go 的标准重新格式化你的代码。
gofmtgoimports
go vet
go vetPrintf
go generate
go generate
//go:generate command arguments
package project
//go:generate echo Hello, Go Generate!
func Add(x, y int) int {
return x + y
}
$ go generate
Hello, Go Generate!
阅读代码的工具
阅读代码比编写代码花费更多的时间,因此,帮助我们阅读代码的工具是任何优秀 Go 开发者都需要掌握的重要工具。
go doc / godoc
这听起来很像 javadoc 和其他类似的工具,但是 Go 文档没有任何额外的格式化规则。所有内容都是纯文本。
例如,我们可以获得关于 json 的信息。编码器通过运行:
go doc json.Encoder
package json // import "encoding/json"
type Encoder struct {
// Has unexported fields.
}
...
godocgodoc
godoc errors
use 'godoc cmd/errors' for documentation on the errors command
PACKAGE DOCUMENTATION
package errors
...
非标准 Go 工具
让我们看看社区创建了什么工具来让 Go 开发者高兴。
golint
我也是在保存文件时运行它。
go get -u github.com/golang/lint/golint
errcheck
go get github.com/kisielk/errcheck
此工具检测何时以静默方式忽略错误。这意味着对于一个至少返回一个错误的函数,我们要忽略检查返回的值。
foo() error
foo()_ = foo()
附言
Go 社区是非常活跃的,总是创造新的并且是有用的工具,如果你知道一些你觉得有用的工具,请留下评论。