Golang环境配置
1. goenv工具
goenv
是一个用于管理 Go 语言版本的工具,类似于 Python 的 pyenv
或 Ruby 的 rbenv
。不过需要注意的是,goenv
并不是一个官方维护的工具,而是一个社区项目。Go 语言本身已经提供了很好的版本管理工具(通过 GOROOT
和 GOPATH
变量,以及 Go Modules),但在某些场景下,使用 goenv
可以更方便地切换和管理多个 Go 版本。
1.1 安装
shell
git clone https://github.com/syndbg/goenv.git ~/.goenv
cd ~/.goenv && src/configure
1.2 配置
shell
export PATH="$HOME/.goenv/bin:$PATH"
# 配置GOROOT可以决定goenv下载go版本的路径
export GOROOT = "$HOME/go_sdk"
shell
source ~/.bashrc # 或者 source ~/.zshrc
1.3 常用指令
shell
# 安装指定版本
goenv install <version> <path-to-go-installation>
# 卸载指定版本
goenv uninstall <version>
# 列出已经安装的所有版本
goenv versions
# 列出goenv的版本
goenv version
# 设置全局go版本
goenv global <version>
# 设置项目本地go版本
goenv local <version>
2. go常用命令
-
go build
- 功能:编译 Go 程序。
- 用法:在包的编译过程中,若有必要,会同时编译与之相关联的包。如果是普通包,执行
go build
命令后不会产生任何文件;如果是main
包,执行go build
命令后会在当前目录下生成一个可执行文件。 - 示例:
go build
、go build -o myapp.exe
(指定输出文件名)。
-
go clean
- 功能:移除当前源码包里面编译生成的文件。
- 用法:会删除旧的 object 目录、test 目录、gotest 文件、test 记录等编译生成的文件。
- 示例:
go clean
。
-
go fmt
- 功能:格式化 Go 代码文件。
- 用法:通常开发工具会带有保存时自动格式化功能,该功能底层调用了
go fmt
命令。也可以使用gofmt
命令并加上-w
参数来格式化整个项目。 - 示例:
gofmt -w src
。
-
go get
- 功能:动态获取远程代码包。
- 用法:支持 BitBucket、GitHub、Google Code 和 Launchpad 等平台。该命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行
go install
。 - 示例:
go get github.com/user/repo
。
-
go install
- 功能:编译并安装包和依赖。
- 用法:生成结果文件(可执行文件或者
.a
包),并将编译好的结果移到GOPATH/pkg
或GOPATH/bin
。 - 示例:
go install
。
-
go test
- 功能:自动读取源码目录下面名为
*_test.go
的文件,生成并运行测试用的可执行文件。 - 用法:默认不需要任何参数,会自动测试源码包下面所有测试文件。也可以带上参数,详情参考
go help testflag
。 - 示例:
go test
。
- 功能:自动读取源码目录下面名为
-
go doc
- 功能:查看 Go 包的文档。
- 用法:通过命令行查看相应包的文档,例如
go doc builtin
查看内置包的文档,go doc net/http
查看net/http
包的文档。 - 示例:
go doc fmt Printf
(查看某个包里面的函数)。
-
go fix
- 功能:修复以前老版本的代码到新版本。
- 用法:例如将 go1 之前老版本的代码转化到 go1。
- 示例:
go fix ./...
(修复当前目录及其子目录中的所有 Go 文件)。
-
go version
- 功能:查看 Go 当前的版本。
- 用法:直接运行
go version
即可。 - 示例:
go version
。
-
go list
- 功能:列出当前全部安装的 package。
- 用法:直接运行
go list
即可。 - 示例:
go list
。
-
go run
- 功能:编译并运行 Go 程序。
- 用法:直接运行
go run
,后面跟上要运行的 Go 文件名。 - 示例:
go run main.go
。
-
go env
- 功能:打印 Go 的环境信息。
- 用法:直接运行
go env
即可查看 Go 的环境变量等信息。 - 示例:
go env
。
-
go generate
- 功能:从处理源代码生成 Go 文件。
- 用法:通常用于在编译前自动生成一些代码文件。
- 示例:在源代码文件中添加
//go:generate
指令,然后运行go generate
。
-
go tool
- 功能:运行 Go 提供的工具。
- 用法:Go 提供了一系列工具,如
vet
、fix
等,可以通过go tool
命令运行。 - 示例:
go tool vet ./...
(对当前目录及其子目录中的所有 Go 文件进行 vet 检查)。
-
go mod
(Go 1.11+ 版本)
- 功能:Go 语言的模块支持,用于管理项目依赖。
- 用法:提供了
init
、tidy
、verify
、graph
等子命令,用于初始化模块、整理依赖、验证依赖等。 - 示例:
go mod init example.com/mymodule
(初始化模块)。