goenv && go 环境配置

Golang环境配置

1. goenv工具

goenv 是一个用于管理 Go 语言版本的工具,类似于 Python 的 pyenv 或 Ruby 的 rbenv。不过需要注意的是,goenv 并不是一个官方维护的工具,而是一个社区项目。Go 语言本身已经提供了很好的版本管理工具(通过 GOROOTGOPATH 变量,以及 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常用命令

  1. go build

    • 功能:编译 Go 程序。
    • 用法:在包的编译过程中,若有必要,会同时编译与之相关联的包。如果是普通包,执行 go build 命令后不会产生任何文件;如果是 main 包,执行 go build 命令后会在当前目录下生成一个可执行文件。
    • 示例:go buildgo build -o myapp.exe(指定输出文件名)。
  2. go clean

    • 功能:移除当前源码包里面编译生成的文件。
    • 用法:会删除旧的 object 目录、test 目录、gotest 文件、test 记录等编译生成的文件。
    • 示例:go clean
  3. go fmt

    • 功能:格式化 Go 代码文件。
    • 用法:通常开发工具会带有保存时自动格式化功能,该功能底层调用了 go fmt 命令。也可以使用 gofmt 命令并加上 -w 参数来格式化整个项目。
    • 示例:gofmt -w src
  4. go get

    • 功能:动态获取远程代码包。
    • 用法:支持 BitBucket、GitHub、Google Code 和 Launchpad 等平台。该命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行 go install
    • 示例:go get github.com/user/repo
  5. go install

    • 功能:编译并安装包和依赖。
    • 用法:生成结果文件(可执行文件或者 .a 包),并将编译好的结果移到 GOPATH/pkgGOPATH/bin
    • 示例:go install
  6. go test

    • 功能:自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件。
    • 用法:默认不需要任何参数,会自动测试源码包下面所有测试文件。也可以带上参数,详情参考 go help testflag
    • 示例:go test
  7. go doc

    • 功能:查看 Go 包的文档。
    • 用法:通过命令行查看相应包的文档,例如 go doc builtin 查看内置包的文档,go doc net/http 查看 net/http 包的文档。
    • 示例:go doc fmt Printf(查看某个包里面的函数)。
  8. go fix

    • 功能:修复以前老版本的代码到新版本。
    • 用法:例如将 go1 之前老版本的代码转化到 go1。
    • 示例:go fix ./...(修复当前目录及其子目录中的所有 Go 文件)。
  9. go version

    • 功能:查看 Go 当前的版本。
    • 用法:直接运行 go version 即可。
    • 示例:go version
  10. go list

    • 功能:列出当前全部安装的 package。
    • 用法:直接运行 go list 即可。
    • 示例:go list
  11. go run

    • 功能:编译并运行 Go 程序。
    • 用法:直接运行 go run,后面跟上要运行的 Go 文件名。
    • 示例:go run main.go
  12. go env

    • 功能:打印 Go 的环境信息。
    • 用法:直接运行 go env 即可查看 Go 的环境变量等信息。
    • 示例:go env
  13. go generate

    • 功能:从处理源代码生成 Go 文件。
    • 用法:通常用于在编译前自动生成一些代码文件。
    • 示例:在源代码文件中添加 //go:generate 指令,然后运行 go generate
  14. go tool

    • 功能:运行 Go 提供的工具。
    • 用法:Go 提供了一系列工具,如 vetfix 等,可以通过 go tool 命令运行。
    • 示例:go tool vet ./...(对当前目录及其子目录中的所有 Go 文件进行 vet 检查)。
  15. go mod

    (Go 1.11+ 版本)

    • 功能:Go 语言的模块支持,用于管理项目依赖。
    • 用法:提供了 inittidyverifygraph 等子命令,用于初始化模块、整理依赖、验证依赖等。
    • 示例:go mod init example.com/mymodule(初始化模块)。
相关推荐
毕设源码-欧阳学姐1 小时前
计算机毕业设计springboot网咖管理系统 基于 SpringBoot 的电竞馆综合运营平台 融合 SpringBoot 技术的网吧智能营业系统
spring boot·后端·课程设计
缺点内向2 小时前
如何在C#中为文本内容添加行号?
开发语言·c#·word·.net
h***8562 小时前
Rust在Web中的前端开发
开发语言·前端·rust
开心猴爷2 小时前
Mac 抓包软件怎么选?HTTPS 调试、TCP 流量分析与多工具协同的完整实践指南
后端
Chasing Aurora2 小时前
Python连接云端Linux服务器进行远程 (后端开发/深度学习)时候的注意事项
linux·开发语言·python·ubuntu·ai编程
key062 小时前
从数据安全体系逆推数据自由度的权力本质
java·开发语言
C++ 老炮儿的技术栈2 小时前
用密码学安全随机数生成256位密钥
c语言·开发语言·c++·windows·安全·密码学·visual studio
z***43842 小时前
java与mysql连接 使用mysql-connector-java连接msql
java·开发语言·mysql
道路与代码之旅2 小时前
“变量也能是函数?——论 Kotlin 中那些会说话的变量,以及它们如何让代码少说废话”
android·开发语言·kotlin
白露与泡影2 小时前
大厂Java面试前复习的正确姿势(800+面试题附答案解析)
java·开发语言·面试