大家好,我是程序员小乔
。
Go
最近真的起飞了。越来越多的公司采用它,开发人员也普遍接受它,因为它易于学习,功能强大。
如果你目前正在学习 Go
语言,这里有 10
个有用的 CLI
命令,你可能会在每天使用 Golang
时使用它们。
你在本地机器上使用 Go
进行任何操作之前,你需要安装 Go
编译器,然后可以通过运行以下命令检查是否正确安装(能正常输出版本信息,表明安装成功了):
$ go version
go version go1.18 darwin/arm64
然后你大概率会使用下面这个命令:
$ go env
GO111MODULE="on"
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/handsomejob/Library/Caches/go-build"
GOENV="/Users/handsomejob/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/handsomejob/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/handsomejob/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/opt/homebrew/Cellar/go/1.18/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/opt/homebrew/Cellar/go/1.18/libexec/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.18"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/t5/pyg3ytjs5txccg8ln5637cw40000gn/T/go-build649836461=/tmp/go-build -gno-record-gcc-switches -fno-common"
它会列出 Go
相关的环境变量。我们通常需要执行下面这个命令,否则安装依赖会有问题:
$ go env -w GOPROXY=https://goproxy.cn,direct
接着就可以准备写代码了。
一个新项目,你会执行如下命令:
$ go mod init <project name>
这是初始化项目,会生成 go.mod
文件。
如果依赖一些第三方库,这会在你的项目中使用下面这个命令安装:
$ go get <package name>
在编写完一些代码后,你会尝试运行它,就需要使用这个命令:
$ go run <file name>
很多人喜欢 Go
的原因之一就是编译成单一可执行文件,没有其他依赖。要编译,执行如下命令:
$ go build -o <name of binary> <packages>
与 Java
、C++
等相比,Go
的编译速度很快。
Go
是一门注重工程化的语言,提供了强大的工具链,摒弃了一些风格之争。在提交代码之前,你应该通过以下命令格式化代码:
$ go fmt
当代码中移除了一些依赖或增加一些依赖,我们应该执行如下命令:
$ go mod tidy
记住:你不需要手动修改 go.mod
文件。
如果你编写了一些测试代码,想要看看是否符合预期,需要运行这些测试,这要执行如下命令:
$ go test
最后,下面这个命令你可能会感兴趣:
$ go vet
该命令检查 Go
源代码并报告可疑的情况,例如 Printf
调用,其参数与格式字符串不对齐。Vet
使用的启发式方法不能保证所有报告都是真实的问题,但它可以发现编译器没有捕获到的错误。
这里是该命令的官方文档:pkg.go.dev/cmd/vet
关注公众号 「jobhandsome」