Go 命令介绍
go 提供了一套强大好用的命令系统
go build 编译包和依赖项
go clean 删除目标文件
go env 打印Go环境信息
go fix 在包上运行go tool修复,用来修复老版本到新版本的问题
go fmt 在包源上运行gofmt
go generate 通过处理源生成Go文件
go get 下载并安装包和依赖项
go install 编译和安装包和依赖项
go list 列出包
go run 编译并运行go程序
go test 测试包,运行以 _test.go结尾的文件
go tool 运行指定的go工具
go version 打印go版本
go vet 在包上运行工具go vet,它可以在编译阶段和运行阶段发现bug
详细的官网地址为:中文https://go-zh.org/cmd/go/ 英文:https://golang.org/doc/cmd
介绍几个常用的:
1、go build
go build [-o output][-i] [build flags][packages]
这个命令主要用于测试编译。在包的编译过程中,若有必要,会同时编译与之相关联的包。
- go build 会默认编译当前文件夹下的所有.go结尾的文件
- go build 会忽略目录下以“_”或“.”开头的 go 文件 ,所以不会编译测试文件
- build mian包的文件,会在当前目录生成一个可执行文件,其他不会。比如文件 demo.go ,我们进行go build demo.go 如果demo.go 是main包:执行结果会在当前目录生成一个可执行文件。如果想在gopath/bin下生成可执行文件的话需要执行go install 或者 go build -o 路径/name.exe [如果多文件再加上文件名]
- -o: 仅在编译单个包时允许,强制构建将结果可执行文件或对象写入命名输出文件,注意格式:go build -o 可执行文件名 .go文件名 ,例如 go build -o abc.exe demo.go,就会把demo.go编译并生成abc.exe,当然可以指定路径
- 可以根据不同的操作系统后缀来命名文件,go build 的时候会选择性地编译以系统名结尾的文件
2、go clean
这个命令是用来移除当前源码包里面编译生成的文件。这些文件包括
_obj/ 旧的 object 目录,由 Makefiles 遗留
_test/ 旧的 test 目录,由 Makefiles 遗留
_testmain.go 旧的 gotest 文件,由 Makefiles 遗留
test.out 旧的 test 记录,由 Makefiles 遗留
build.out 旧的 test 记录,由 Makefiles 遗留
*.[568ao] object 文件,由 Makefiles 遗留
DIR(.exe) 由 go build 产生
DIR.test(.exe) 由 go test -c 产生
MAINFILE(.exe) 由 go build MAINFILE.go 产生
一般在提交版本控制前,删除一些编译生成的文件
3、go fmt
格式化代码。go fmt <文件名>.go
一般开发工具都自带
使用 go fmt 命令,更多时候是用 gofmt,而且需要参数-w,否则格式化结果不会写入文件 。gofmt -w src
,可以格式化整个项目
4、go get
动态获取远程代码包 ,这个命令在内部实际上分成了两步操作:
第一步是下载源码包,第二步是执行 go install。 go 工具会自动根据不同的域名调用不同的源码工具 ,所以要正常使用确保安装了合适的源码管理工具。
5、go install
生成可执行文件。这个命令在内部实际上分成了两步操作:
第一步是生成结果文件(可执行文件或者.a 包),第二步会把编译好的结果移到$GOPATH/pkg 或者$GOPATH/bin
6、go test
执行这个命令,会自动读取源码目录下面名为*_test.go 的文件,生成并运行测试用的可执行文件。
7、go doc
执行godoc 可以查看bao、文件、以及方法的源码文档。比如:go doc net/http
godoc -src fmt Printf
等等。最好用的还是可以在本地搭建文档服务godoc -http=:端口号
然后访问localhost:端口号。如果你的pkg下有自己生成的文件,也会在文档列出来。
8、go run
很实用,编译并直接运行。比如 go run main.go
其他命令或者详细参数,用到的时候可以去查官方文档。