编辑
2022-09-27
Golang
00
请注意,本文编写于 786 天前,最后修改于 786 天前,其中某些信息可能已经过时。

目录

go sdk 命令行工具
go build
go install
go get
go clean
go run
go fmt
go vet
go env
go fix
go generate
go doc
go help

go sdk 命令行工具

Go SDK 提供了丰富且实用的命令行工具,涵盖编译、代码格式化、源码获取、测试和性能分析等方方面面

go build

go build 命令的作用是编译 Go 源码,并生成可执行的文件。

相关信息

在编译过程中,除了我们自己写的代码外,如果使用了第三方的包,这些包会被一同编译。当我们执行 go build 命令后,会搜索当前目录下的 go 源码并完成编译。

go build 命令还允许附加参数

image.png

image.png

go install

go install 命令的作用和 go build 类似,都是将源码编译为可执行的文件,附加参数也基本通用

区别在于:

  • go install 命令生成的可执行文件使用包名来命名;
  • go install 命令在编译源码后,会将可执行文件或库文件安装到约定的目录下;
  • 默认情况下,go install 命令会将可执行文件安装到 GOPATH\bin 目录下,依赖的三方包会被安装到 GOPATH\bin 目录下。

go get

go get 命令的作用是获取源码包,这一操作包含两个步骤

  1. 下载源码
  2. 执行 go install 命令进行安装

go 的包索引库

pkg.go.dev/

搜索包名,在包详情页可以找到仓库地址

bash
// 下载 go 包 // go get <包仓库地址> go get github.com/ethereum/go-ethereum // 若要指定所获取源码包的版本,可以通过添加 “@版本号” 的方式执行 go get github.com/ethereum/go-ethereum@v1.10.1

go get 命令还允许附加参数

image.png

go clean

go clean 命令可以清理当前目录内的所有编译生成的文件

包括:

  • 当前目录下生成的与包名或者 Go 源码文件同名的可执行文件
  • 当前目录中 _obj 和 _test 目录中名为 _testmain.go、test.out、build.out、a.out 以及后缀为 .5、.6、.8、.a、.o和 .so 的文件,这些文件通常是执行go build命令后生成的;
  • 当前目录下生成的包名加 “.test” 后缀为名的文件,这些文件通常是执行 go test 命令后生成的;
  • 工作区中 pkg 和 bin 目录的相应归档文件和可执行文件,这些文件通常是执行 go install 命令后生成的。

go clean 命令还允许附加参数

image.png

提示

在团队式开发中,通常在每次提交代码前执行 go clean 命令,防止提交编译时生成的文件。

go run

go run 命令的作用是直接运行 go 源码,不在当前目录下生成任何可执行的文件。

从原理上讲,go run 只是将编译后生成的可执行文件放到临时目录中执行,工作目录仍然为当前目录。同时,go run 命令允许添加参数,这些参数将作为 go 程序的可接受参数使用。

由此可见,go run 命令同样会执行编译操作。但要注意的是,go run 不适用于包的执行。

go fmt

go fmt 命令的作用是将代码按照Go语言官方提供的代码风格进行格式化操作

image.png

bash
go fmt

image.png

go vet

go vet 可以报告我们的包中可能存在的错误

image.png

bash
go vet

image.png

go env

go env将简单地打印所有 go 环境信息

bash
go env

image.png

go fix

go fix 可以找到使用旧 API 的 Go 程序,并使用新的 API重写它们

go generate

go generate 通常用于代码生成。

它将扫描与当前包相关的源代码文件,找出所有包含 //go:generate 的特殊注释,提取并执行该特殊注释后面的命令。

go doc

go doc 可以显示一个包或标识符的文档

bash
go doc -src fmt Printf

image.png

go help

go help 可以查看所有 go 命令行可用的命令

image.png

本文作者:Silon汐冷

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!