命令行工具

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 社区是非常活跃的,总是创造新的并且是有用的工具,如果你知道一些你觉得有用的工具,请留下评论。