使用 gvm 可以带来以下好处:

  1. 快速切换 Golang 版本,方便进行版本测试和开发;
  2. 可以在多个项目中同时使用不同版本的 Golang 包和工具,避免冲突;
  3. 可以通过 gvm 管理不同版本的 Golang,方便安装、卸载和更新;
  4. 可以自由选择 Golang 的镜像源,下载更快。

我使用的是win10 64位系统,所以只考虑windows,其他操作系统应该是类似的。gvm在windows下叫g。

一、下载

在 Windows 下,gvm 叫做 g,请在 https://github.com/voidint/g/releases 下载适合您系统的版本。例如,如果您的系统是 64 位的,可以下载 g1.5.0.windows-amd64.zip 文件。

二、解压

下载完成后,将压缩包解压到指定目录下(例如 D:\Downloads 目录),得到一个名为 g.exe 的文件。

三、配置gvm的环境变量

首先需要设置以下环境变量:

G_MIRROR=https://golang.google.cn/dl/
G_HOME=D:\gvm\.g
G_EXPERIMENTAL=true

其中,

G_MIRROR:设置 Golang 的下载镜像,这里使用了 Google 的镜像。

G_HOME:设置 gvm 安装的位置,我不喜欢设置在C盘。

G_EXPERIMENTAL:设置是否显示实验性版本。最好设置为true,否则会占用C盘。

四、配置go的环境变量

接下来需要设置 Golang 的环境变量,包括 GOPATH 和 GOROOT。

GOPATH=D:\mysetup\gopath
GOROOT=%G_HOME%\go

注意:

GOPATH 和 GOROOT 不能是同一个目录。

GOROOT 指向 G_HOME 目录下的 go 子目录。

除此之外,还可以设置其他环境变量,例如:

GO111MODULE=on
GOINSECURE=git.dsy.com
GOOS=windows
GOPRIVATE=git.dsy.com
GOPROXY=https://goproxy.cn,direct
CGO_ENABLED=0

您可以根据自己的需要进行修改。

五、配置Path的环境变量

为了方便使用gvm命令,将D:\Downloads放在系统Path环境变量中。

为了方便使用 Golang 工具和命令,需要将 GOPATH 和 GOROOT 加入到系统 Path 环境变量中:

Path=%GOPATH%\bin;%GOROOT%\bin;D:\Downloads

六、使用gvm

进入命令行工具,敲相关命令。

首先敲g命令,列出gvm相关命令列表:

g

从截图里可以看出有ls、ls-remote、use、install、uninstall、clean、self、help相关命令。

ls:列出已安装的版本

ls-remote:列出可供下载安装的远程版本

use:切换到指定的版本

install:下载并安装指定版本

uninstall:卸载指定版本

clean:从包下载目录中删除文件

self:修改gvm本身

help, h:显示命令列表或一个命令的帮助信息

列出已安装的版本,输入以下命令:

g ls

列出可供下载安装的远程版本,输入以下命令:

g ls-remote



安装指定版本的 Golang,目前没安装1.19,可以用命令安装1.19,命令如下:

g install 1.19
g ls



可以看到,现在已经安装了1.19版本,并且切换到1.19环境了。安装某个版本会自动切换到某个版本。

如果已经下载了某个版本,比如1.20.3,如何切换呢?用g use 1.20.3 命令就行,输入以下命令:

g use 1.20.3
g ls



需要使用的命令是g ls,g ls-remote,g install,g use。其他命令,比如卸载,你们就自己研究吧。

以上就是常用的 gvm 命令,在开发过程中,gvm 可以帮助我们快速切换不同版本的 Golang,并在不同的项目中使用不同的 Golang 包和工具。

node可以用nvm快速切换版本,golang如何快速切换版本?用gvm就行。的更多相关文章

  1. 【node】使用nvm管理node版本

    写在前面 nvm(nodejs version manager)是nodejs的管理工具,如果你想快速更新node版本,并且不覆盖之前的版本:或者想要在不同的node版本之间进行切换: 使用nvm来安 ...

  2. 如何快速切换Python运行版本,如何选择Python版本

    想必在学习Python时会面临选择Python2.X或者是Python3.X的问题. 我在电脑上不同位置下载安装了不同版本 的Python,当我在学习时,不管是需要哪一个版本才能运行都无所谓,相应的快 ...

  3. Node版本管理器NVM常用命令

    NVM是什么?nvm (Node Version Manager) 是Nodejs版本管理器,可对不同的node版本快速进行切换. 为什么要用NVM?基于node的工具和项目越来越多,但是每个项目使用 ...

  4. node版本管理器nvm(服务器项目相关)

    git项目 https://github.com/creationix/nvm 1.下载并安装NVM脚本 curl https://raw.githubusercontent.com/creation ...

  5. Node版本管理工具-NVM的安装与使用(windows系统)

    友情提示:为避免踩坑,建议浏览全文后动手操作!!! 一.nvm是什么 看到这篇文章的猿/媛们肯定不会问这个问题了,但是我还是要说,哈哈哈! 无论工作还是干嘛,就不会一直做项目,所以肯定也不会一直用一个 ...

  6. VUE项目无法启动NODE版本与NODE-SASS、SASS-LOADER版本不兼容解决方案

    一.错误分析 在VUE项目开发中,我们经常会遇到报错: Node Sass version 7.0.1 is incompatible with ^4.0.0. 网上解决方案也千奇百怪,最终操作下来, ...

  7. Node版本管理工具 - Nvm的下载、安装配置与使用

    1.业务背景 不同时期的项目使用的Node版本也不一样,随着版本的更新一直在使用的Node版本也在不断升级,本文介绍一个Node版本的管理工具,可自由切换版本. 2.Nvm下载与安装 1)下载 下载地 ...

  8. Java项目多版本部署及快速回滚(含完整命令)

    1. 场景描述 java项目linux环境下快速部署,以前介绍过,今天主要结合linux的软连接,实现版本的快速切换(回滚),包含完整的start.sh与stop.sh,只需修改包名和路径即可运行,有 ...

  9. Golang Module快速入门

    前言: 在Golang1.11之前的版本中,官方没有提供依赖和包管理工具.开发者通常会使用vendor或者glide的方式来管理依赖(也有直接使用GOPATH多环境方式),而在Golang1.11之后 ...

  10. PHP集成环境自定义设置PHP版本,同时运行多个php版本,700个PHP版本随时切换,一键开启常用模块。

    本文采用我自己开发的纯绿色版WAMP环境(我将这个WAMP环境命名为PHPWAMP) (PHPWAMP默认集成VC,不需要单独安装) 那么什么是WAMP环境?WAMP这个词是什么意思? Windows ...

随机推荐

  1. 2022安洵杯pwn-babyarm

    首先就是绕过一个简单的变表base64的加密key 然后就是一个类似ret2libc的利用方式,不过没有直接控制r0的gadget 使用的是arm32中万能的gadget from pwn impor ...

  2. Java-14流Stream【创建一个简易for循环工具】

    Java-14流Stream 构造简易的循环取代for IntStream类提供了一个range()方法,可以生成一个流----由int值组成的序列 import static java.util.s ...

  3. Cryptanalyzing and Improving a Novel Color Image Encryption Algorithm Using RT-Enhanced Chaotic Tent Maps

    Cryptanalyzing and Improving a Novel ColorImage Encryption Algorithm Using RT-EnhancedChaotic Tent M ...

  4. 【微信网页授权】SpringBoot+uniapp实现网页授权获取用户基本信息

    前言 缘由 起因于本狗上一个项目本打算采用微信公众号网页授权登录做用户鉴权,但最终因公众号是未认证的订阅号,无权限获取用户信息,所以改变思路,采用登录注册方式实现用户区分.但在开发中,学习了微信网页授 ...

  5. 阿里云OSS前端直传+net core后端签名

    OSS前端直传+后端签名 一.服务端签名后前端直传 首先安装阿里云SDK Aliyun.OSS.SDK.NetCore public static string accessKeyId = " ...

  6. Zab(Zookeeper Atomic Broadcast)协议

    更多内容,前往IT-BLOG 一.什么是 Zab协议 Zab( Zookeeper Atomic Broadcast:Zookeeper原子广播)Zookeeper 通过 Zab 协议保证分布式事务的 ...

  7. 手机号码归属地的自动查询.py(亲测有效)

    import requests url = "http://m.ip138.com/sj.asp?mobile=" kv = {'user-agent':'Mozilla/5.0' ...

  8. ChatGPT 通识入门

    最近网络上对于Chat GPT的讨论热潮不断地膨胀,一个势必给整个人类社会带来新变革的科技和工具产生了.这个新的工具能够识别自然语言并能够理解上下文的语境,并能够具备人类思维的模型. 但是ChatGP ...

  9. pandas之concat链接操作

    Pandas 通过 concat() 函数能够轻松地将 Series 与 DataFrame 对象组合在一起,函数的语法格式如下: pd.concat(objs,axis=0,join='outer' ...

  10. 社工工具包setoolkit克隆网站钓鱼网站

    实验主机:kali  win10 (搭建好的dvwa靶场用于克隆登录页) setoolkit简介:setoolkit 是一个开源的社会工程学工具包.有很多选项可以使用更多操作读者自行探究. 实验开始: ...