1、go help
xx命令用于查看帮助信息,
go help bug用于查看go bug的帮助信息。
2、go build
go build命令主要用于测试编译。在包的编译过程中,若有必要,会同时编译依赖包。
-v 标记,可以把命令执行过程中构建的包名(包含编译过程中依赖的包)打印出来,
如果 go build 的是一个源码文件,则会打印出的包名为 command-line-arguments,
-x 标记,可以打印编译期间所用到的所有shell命令。
-o 标记,用来指定生成文件的路径和名称。
-a 标记,强制重新编译。
如果是普通包,执行go build命令后不会产生任何文件。
如果是main包,执行go build命令后,会在当前目录下生成一个可执行文件。
如果需要在$GOPATH/bin下生成相应的exe文件,
需要执行go install 或者使用 go build -o 路径/a.exe。
go build时会选择性地编译以系统名结尾的文件(Linux、Darwin、Windows、Freebsd)。
Linux系统下面编译只会选择array_linux.go文件,其它系统命名后缀文件全部忽略。
GO语言的源码文件分为三类,
命令源码文件、库源码文件和测试源码文件。
如果编译的是命令源码文件,或包含命令源码文件的包(main包)时,编译通过后会生成可执行文件;
反之则不会生成任何文件,只是做检查性编译。
GO语言默认使用静态编译,优点是部署时非常简单,但使用动态库,可以减少分发包的大小。
目前在windows下尚不支持编译成动态库。
如果是直接使用,表示试图编译当前目录所对应的代码包,
如果当前目录不是一个有效的代码包(包含在 $GOPATH/src 目录下)则会报错;
如果带上代码包名,则表示编译指定的代码包;
如果带上源码文件,则表示编译指定源码文件。
3、go clean
go clean命令用来移除当前源码包里面编译生成的文件
_obj/ 旧的object目录,由Makefiles遗留
_test/ 旧的test目录,由Makefiles遗留
_testmain.go 旧的gotest文件,由Makefiles遗留
test.out 旧的test记录,由Makefiles遗留
build.out 旧的test记录,由Makefiles遗留
DIR(.exe) 由 go build 产生
DIR.test(.exe) 由 go test -c 产生
MAINFILE(.exe) 由 go build MAINFILE.go产生
4、go fmt
go fmt命令主要用来格式化代码文件。
gofmt -w src,可以格式化整个项目。
5、go get
go get命令主要用来动态获取远程代码包,目前支持BitBucket、GitHub、Google Code和Launchpad。
命令本质上是首先通过源码工具clone代码到src目录,然后执行go install。
go get命令在内部分成两步操作:
第一步是下载源码包
第二步是执行go install。
下载源码包的go工具会自动根据不同的域名调用不同的源码工具,对应关系如下:
BitBucket (Mercurial Git)
GitHub (Git)
Google Code Project Hosting (Git, Mercurial, Subversion)
Launchpad (Bazaar)
为了go get能正常工作,必须确保安装合适的源码管理工具,并同时把源码管理工具命令加入到PATH中。
6、go install
go install命令在内部分成两步操作:
第一步是生成结果文件(可执行文件或者.a包),
第二步会把编译好的结果移到 $GOPATH/pkg 或者$GOPATH/bin。
.exe文件: 一般是go install带main函数的go文件产生的,有函数入口,所有可以直接运行。
.a应用包: 一般是 go install不包含main函数的go文件产生的,没有函数入口,只能被调用。
7、go test
go test命令会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。
go test命令会自动把源码包里所有test文件测试完毕,帮助信息可以使用go help testflag查看。
进行单元测试的工具,单元测试代码建议与被测试代码放在同一个代码包中,
并以 "_test.go" 为后缀,测试函数建议以"Test"为名称前缀。
go test命令可以对代码包进行测试,也可以指定某个测试代码文件运行(要一并带上被测试代码文件)
8、go doc
go doc命令是一个很强大的文档工具,用于查看文档,
如查看builtin包执行go doc builtin,
查看http包执行go doc net/http。
查看某一个包里的函数,执行go doc fmt Printf,
查看函数相应的代码,执行go doc -src fmt Printf。
通过命令在命令行执行godoc -http=:端口号,比如godoc -http=:8080。
然后在浏览器中打开127.0.0.1:8080,会看到一个golang.org的本地copy版本,
通过网页可以查询pk文档等其它内容。
如果设置了GOPATH,pkg分类下会列出标准包的文档,本地GOPATH中所有项目的相关文档
9、go fix
go fix用来修复老版本的代码到新版本,例如go1前老版本的代码转化到go1。
10、go version
go version命令用于查看go当前的版本。
11、go env
go env命令用于查看当前go的环境变量,用于打印GO语言的环境信息,
GOPATH是工作区目录,
GOROOT是GO语言安装目录,
GOBIN是通过go install命令生成可执行文件的存放目录(默认是当前工作区的bin目录下),
GOEXE为生成可执行文件的后缀。
12、go list
go list命令用于列出当前全部安装的package。
13、go run
go run命令用于编译并运行Go程序,只能作用于命令源码文件,一般用于开发中快速测试。
14、go tool
go tool pprof性能检查工具, go tool cgo跟C语言和GO语言有关的命令。
15、go vet
go vet是静态检查工具,用于一般项目快完成时进行进行优化。
16、go bug
go bug命令用于GO语言调试。
17、go generate
通过扫描Go源码中的特殊注释来识别要运行的常规命令。
go generate不是go build的一部分,
go generate不包含依赖关系分析,必须在运行go build前显式运行。
go generate由Go package的作者使用,而不是其客户端。