轻松管理多个Go版本之g工具安装与使用方法

 更新时间:2025年11月01日 09:32:26   作者:smiley121  
这篇文章主要介绍了轻松管理多个Go版本之g工具安装与使用的相关资料,g是一个Linux、macOS、Windows下的命令行工具,可以提供一个便捷的多版本go环境的管理和切换,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

Golang 的版本控制工具 g 是一个用于方便地管理和切换 Go 语言版本的命令行工具。它让用户可以轻松地安装、卸载和切换不同版本的 Go,从而更好地适应不同项目的需求。类似于Python的pyenv或Node.js的nvm,是专为Go设计的轻量级版本管理工具。其Github releases链接如下:https://github.com/voidint/g/releases

同时支持windows、linux、mac三个系统。

一、安装g工具

安装g工具可以使用两种方式来安装

  • 手动安装:根据自己的电脑系统和CPU架构选择对应的压缩包,下载到本地。并解压到自己想要放置的文件
  • 自动化安装:根据自己的系统来执行对应的安装脚本

Linux | Mac 用户

自动化安装

通过执行install.sh 代码,自动执行下载及环境配置

# 建议安装前清空`GOROOT`、`GOBIN`等环境变量
$ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
$ cat << 'EOF' >> ~/.bashrc
# 可选。检查g别名是否被占用
if [[ -n $(alias g 2>/dev/null) ]]; then
    unalias g
fi
EOF 
$ source "$HOME/.g/env"

手动安装

创建G_HOME目录,作者推荐使用~/.g

将下载的包解压到~/.g./bin目录,设置对应的环境变量

$ cat >~/.g/env <<'EOF'
#!/bin/sh
# g shell setup
export GOROOT="${HOME}/.g/go"
export PATH="${HOME}/.g/bin:${GOROOT}/bin:$PATH"
export G_MIRROR=https://golang.google.cn/dl/
EOF

启动环境变量

$ source ~/.bashrc # 或source ~/.zshrc

Windows用户

自动安装

windows想要进行自动安装,需要使用powershell 配置管理员权限使用。

$ iwr https://raw.githubusercontent.com/voidint/g/master/install.ps1 -useb | iex

手动安装-官方教程(装到用户目录下)

  • 创建目录mkdir ~/.g/bin
  • 下载release的 windows 版本的二进制压缩包, 解压之后放到~/.g/bin目录下
  • 默认二进制文件名是 g.exe, 如果你已经用 g 这个命令已经用作为 git 的缩写,那么你可以把 g.exe 改为其他名字,如 gvm.exe
  • 执行命令code $PROFILE, 这个命令会用 vscode 打开默认的 powershell 配置文件
  • 在 powershell 的默认配置文件中加入如下内容
$env:GOROOT="$HOME\.g\go"
$env:Path=-join("$HOME\.g\bin;", "$env:GOROOT\bin;", "$env:Path")
  • 再次打开 powershell 终端,就可以使用 g 或者 gvm 命令了

手动安装-非C盘配置

  • 创建自己想放置的目录 如: D:\Golang\g

  • 下载release的 windows 版本的二进制压缩包, 解压之后放到D:\Golang\g\bin目录下

  • 可自定义名称,如改成gvm.exe后,之后使用命令则以gvm开头。

  • 配置环境变量:跟官方代码逻辑一样,主要有三个点,如本次的例子,通过点击环境变量的配置

    1. G_HOME = D:\Golang\g
    2. GOROOT = %G_HOME%\go
    3. Path中配置 %GOROOT%\bin 这里是为了能在终端中使用go
    4. 设置 G_EXPERIMENTAL=true(**重要!**否则默认会安装到 ~/.g)
  • CMD 终端测试 g -v 查看版本

二、使用方法

配置镜像

国内直连官网下载存在困难,建议配置镜像进行下载。
环境变量中配置G_MIRROR为如下任意地址即可

设置后验证查看

g env

常用命令

查询当前可供安装的stable状态及所有的 go 版本

# stable 版本
g ls-remote stable

# 所有远程版本
g ls-remote

# 查看本地已安装版本
g ls

# 安装目标 go 版本
g install 1.24.3

# 切换到已安装go版本
g use 1.24.3

# 卸载指定版本
g uninstall 1.24.3

g 自身相关命令

# 清空 go 安装包文件缓存
g clean

# 查看 g 版本信息
g version 1.5.0

# 更新 g 软件本身
g self update

# 卸载
g self uninstall

总结

通过本文的详细介绍,我们了解到 g 是一个非常强大的工具,能够极大地简化 Go 语言版本管理的过程。以下是本文的重点总结:

  • 安装方式

    • 自动化安装:适用于希望快速上手且不需要自定义配置的用户。只需执行简单的命令即可完成安装。
    • 手动安装:提供了更大的灵活性,允许用户根据自己的需求选择安装路径和环境变量设置。
  • 跨平台支持:无论是 Linux、macOS 还是 Windows 用户,都可以找到适合自己的安装和配置方法。

  • 常用命令

    • 使用 g ls-remote 查看可用的 Go 版本,并使用 g install 安装所需版本。
    • 切换不同版本的 Go 可以通过 g use 命令实现,而卸载不再需要的版本则可以使用 g uninstall。
  • g 自身也提供了诸如 g clean 清理缓存、g version 查看当前版本以及 g self update 更新自身等功能。

  • 镜像源配置:对于国内用户来说,合理配置镜像源(如使用阿里云或中科大等镜像站)可以显著提高下载速度,确保更流畅的开发体验。

  • 环境变量配置:正确配置环境变量是保证 g 能够正常工作的关键步骤。无论是通过自动脚本还是手动配置,都应确保 GOROOT 和 PATH 等重要变量被正确设置。

  • 社区资源:除了本文提供的信息外,官方 GitHub 仓库也是获取最新功能介绍和技术支持的重要来源。

到此这篇关于轻松管理多个Go版本之g工具安装与使用方法的文章就介绍到这了,更多相关g工具管理多个Go版本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言中接口组合的实现方法

    Go语言中接口组合的实现方法

    这篇文章主要介绍了Go语言中接口组合的实现方法,实例分析了接口中包含接口的实现技巧,需要的朋友可以参考下
    2015-02-02
  • 使用Golang轻松实现JWT身份验证的示例代码

    使用Golang轻松实现JWT身份验证的示例代码

    JSON Web Tokens (JWT)是一种流行的安全方法,用于在两个方之间表示声明,本文主要为大家详细介绍了实现Go应用程序中的JWT身份验证过程,需要的可以参考下
    2024-02-02
  • Go语言如何使用分布式锁解决并发问题

    Go语言如何使用分布式锁解决并发问题

    这篇文章主要为大家详细介绍了Go 语言生态中基于 Redis 实现的分布式锁库 redsync,并探讨其使用方法和实现原理,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-03-03
  • 在Linux系统中安装Go语言的详细教程

    在Linux系统中安装Go语言的详细教程

    这篇文章主要介绍了在Linux系统中安装Go语言的详细教程,由于国内很多人对谷歌的盲目追捧,导致Go语言在国内的人气远超国外...需要的朋友可以参考下
    2015-06-06
  • Go语言kube-scheduler深度剖析与开发之pod调度

    Go语言kube-scheduler深度剖析与开发之pod调度

    这篇文章主要为大家介绍了Go语言kube-scheduler深度剖析与开发,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • GO项目配置与使用的方法步骤

    GO项目配置与使用的方法步骤

    本文主要介绍了GO项目配置与使用的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
    2022-06-06
  • go依赖注入库samber/do使用示例讲解

    go依赖注入库samber/do使用示例讲解

    这篇文章主要介绍了go依赖注入库samber/do使用,在本文中,我们学习了如何使用samber/do在 Go 中提供依赖注入,需要的朋友可以参考下
    2024-02-02
  • Go切片导致rand.Shuffle产生重复数据的原因与解决方案

    Go切片导致rand.Shuffle产生重复数据的原因与解决方案

    在 Go 语言的实际开发中,切片(slice)是一种非常灵活的数据结构,然而,由于其底层数据共享的特性,在某些情况下可能会导致意想不到的 Bug,本文将详细分析 rand.Shuffle 之后,切片中的数据出现重复的问题,探讨其根本原因,并给出最佳解决方案,需要的朋友可以参考下
    2025-02-02
  • 详解golang defer 闭包 匿名函数

    详解golang defer 闭包 匿名函数

    这篇文章主要介绍了golang defer 闭包 匿名函数的相关知识,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Go数据结构之HeapMap实现指定Key删除堆

    Go数据结构之HeapMap实现指定Key删除堆

    这篇文章主要给大家介绍了Go语言数据结构之HeapMap实现指定Key删除堆,通过使用Go语言中的container/heap包,我们可以轻松地实现一个优先级队列,文中有详细的代码示例讲解,需要的朋友可以参考下
    2023-07-07

最新评论