Windows 下 golang 多版本管理

news2024/12/25 3:02:06

三年前的旧文,最新要切版本,翻了出来,现在依然有用,分享出来~

当前 golang 的各个版本还有些不兼容的问题,最近遇到 go-micro 框架只能运行在 go1.13~1.14 的版本情况,而我本地 windows 环境安装的 Golang 版本为 1.15,所以就开始考虑如何在机器上同时保留多个 Golang 的版本环境。

一、建目录,改 PATH

思路:下载需要版本的 golang 安装包,利用 PATH 环境变量的变化来调整不同版本环境。

(一)下载多个版本包

  • 下载对应版本的 Golang 安装包,修改目录名称如下:

(二)配置

1. 添加 GPPATH 环境变量

环境变量配置参考:添加或修改环境变量

为了使不同版本 go 环境可以共用同一套 go get 的包,添加环境变量 GOPATH,指定任意目录,如:

2. 添加 %GOPATH%/bin 环境配置

PATH 添加 %GOPATH%/bin,保证安装的 golang 插件可以全局使用。

如添加 go1.14 的环境变量:D:\office\Go1.14\bin,新开终端验证如下:

注意:

1. PATH 环境变量存在多个地址时,用 ; 隔开;

2. Windows 环境下修改环境变量后,需要重启或新开终端才会生效。

3. 命令行设置 go env 环境

打开 CMD 命令行,执行以下命令:

# 路径和环境变量的路径保持一致
set GOROOT=D:\office\Go1.14 set GOPATH=D:\file\goSpace

4. Goland 设置

如果使用 goland 编辑器,打开 setting->Go 设置对应的 GOROOT 和 GOPATH。

二、Golang官方建议

# get 其他版本的 golang
$ go get golang.org/dl/go1.15.2


# 下载,新安装的 go1.15.2.exe 在 %USERPROFILE%\go\bin 目录下
$ go1.15.2 download


# 检查
$ go1.15.2 version
go version go1.15.2 windows/amd64


# 默认的 golang 版本
$ go version
go version go1.13.14 windows/amd64
这种方案每次使用指定版本 go 环境都需要带上对应的版本号,在使用起来很不友好。

三、 g 工具

g 是一个 Linux、macOS、Windows 下的命令行工具,可以提供一个便捷多版本 go环境的管理和切换。

(一)安装

  • 下载 g 稳定最新版 工具,选择下面红框任意一个即可:

  • 解压下载压缩包,将 g.exe 存放在任意文件夹下,这里存在 D:\office\Go 下,并将该目录加入环境变量 PATH 中,新开终端验证:

(二)配置

如果不需要完全隔离每个 go 版本 import 的包,则可以按照第一种 “建目录,改PATH” 方案中共用 GOPATH 的方式,则无需进行如下配置。

  • 环境变量将原有的 %GOPATH%\bin 或 从 PATH 中移除,新增:C:\Users\Administrator\.g\go\bin
  • 调整 GROOT、GOPATH 路径为:C:\Users\Administrator\.g\go
  • 设置 go 环境变量:
set GOROOT=C:\Users\Administrator\.g\go
set GOPATH=C:\Users\Administrator\.g\go
  • 如果使用 goland 编辑器,打开 setting->Go 设置对应的 GOROOT 和 GOPATH。

(三)使用

  • 查询当前可供安装的 stable (稳定版)状态的go版本
$ g ls-remote stable   
1.13.15   
1.14.7
  • 查询当前可供安装的所有 go 版本
$ g ls-remote   
1   
1.2.2   
1.3rc1   
1.3rc2   
1.3   
……    // 省略
  • 安装目标 go 版本,示例安装 1.14.7
$ g install 1.14.7 
Downloading 100% |███████████████| (119/119 MB, 9.939 MB/s) [12s:0s] 
Computing checksum with SHA256 
Checksums matched 
Now using go1.14.7
  • 查询已安装到本地的 go 版本
$ g ls 
* 1.14.7  // * 标识当前正在使用的版本   
  1.16.1
  • 切换和使用另一个已安装的 go 版本
$ g use 1.16.1
go version go1.16.1 windows/amd64
  • 卸载一个已安装的 go 版本,如卸载 1.14.7
$ g uninstall 1.14.7 
Uninstalled go1.14.7

(四)总结分析

g 工具本质上其实和第一个建不同版本目录改 PATH 是一个原理,可以看一下 C:\Users\Administrator\.g 目录:

downloads 文件夹是已下载每个版本的压缩包:

version 文件夹则是每个 go 版本安装包解压后的文件夹,文件夹名称改为了版本信息:

可以看到,go 文件夹其实是一个快捷方式,g 工具根据使用的不同版本,对应其实是更改这个 g 文件夹下的快捷方式映射到 version 中不同的文件夹而已,比如目前我正在使用 1.16.1 版本,查看 go 文件夹快捷方式属性:

明显能看到映射目标为:C:\Users\Administrator\.g\versions\1.16.1。

以此,切换不同版本后,安装的 go 插件都可能不同,通过不同的版本文件夹分隔,实现 go 环境完全独立的效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2217268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java中字符串.split分割转List<String>判空问题

第一种分割直接分割&#xff0c;如果cph字符串为空&#xff0c;分割后cphList会>0 List<String> cphList Arrays.asList(cph.split(","));第二种判空后分割&#xff0c;如果cph字符串为空&#xff0c;判空后再分割cphList会0 List<String> cphList…

面向城市运行“一网统管”的实景三维示范应用

在新型智慧城市建设的浪潮中&#xff0c;实景三维技术正成为推动城市治理现代化的重要力量。“一网统管”作为城市运行管理的新理念&#xff0c;强调了跨部门协作和数据共享&#xff0c;而实景三维技术为此提供了强有力的支撑。本文将探讨实景三维技术如何赋能“一网统管”&…

如何用宝塔面板和HYBBS构建高颜值论坛打造个性化社区平台

文章目录 前言1. HYBBS网站搭建1.1 HYBBS网站安装1.2 HYBBS网站测试1.3. cpolar的安装和注册 2. 本地网页发布2.1.Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3.公网访问测试总结 前言 本文主…

centos ping能通但是wget超时-解决

问题截图&#xff1a; 域名解析地址为IPV6地址&#xff0c;建议您调整IPV4优先级之后&#xff0c;再尝试访问&#xff0c;请参考Linux系统IPv4/IPv6双栈接入优先使用IPv4设置&#xff1a;移动云帮助中心 实操截图&#xff1a;

卸载Python

1、查看安装框架位置并删除 Sudo rm -rf /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8 2、查看应用并删除 在 /Applications/Python 3.x 看是否存在&#xff0c;如果存在并删除。 3、删除软连接 ls -l /usr/bin/py* 或 ls -…

5G/4G边缘计算网关的各项功能-天拓四方

随着物联网&#xff08;IoT&#xff09;技术的飞速发展&#xff0c;边缘计算作为其中不可或缺的一环&#xff0c;正逐步成为推动数字化转型的重要力量。而5G/4G边缘计算网关作为边缘计算的关键组成部分&#xff0c;其功能之全面、性能之强大&#xff0c;使其成为连接物联网设备…

非线性激活pytorch

**前置知识&#xff1a; 1、 self.sigmoid1Sigmoid() outputself.sigmoid1(input) 2、常见的非线性激活函数&#xff1a; 3、非线性激活的作用&#xff1a; 线性与非线性 线性函数&#xff1a;假设你用直线去描述波浪的形状。无论你怎么改变直线的斜率&#xff0c;结果都是…

uni-app写的微信小程序如何体积太大如何处理

方法一&#xff1a;对主包进行分包处理&#xff0c;将使用url: /pages/components/equipment/equipment跳转页面的全部拆分为分包&#xff0c;如url: /pagesS/components/equipment/equipment 在pages.json中添加 "subPackages": [{ "root"…

【排序】——2.快速排序法(含优化)

快速排序法 递归法 霍尔版本(左右指针法) 1.思路 1、选出一个key&#xff0c;一般是最左边或是最右边的。 2、定义一个begin和一个end&#xff0c;begin从左向右走&#xff0c;end从右向左走。&#xff08;需要注意的是&#xff1a;若选择最左边的数据作为key&#xff0c;则…

软考(网工)——局域网和城域网

&#x1f550;局域网基础 1️⃣局域网和城域网体系架构 IEEE&#xff08;负责链路层&#xff09; 2️⃣局域网拓扑结构 局域网的主要特征由网络的拓扑结构、所采用的协议类型&#xff0c;以及介质访问控制方法决定。局域网的拓扑结构是指连接网络设备的传输介质的铺设形式&am…

爬虫逆向学习(十二):一个案例入门补环境

此分享只用于学习用途&#xff0c;不作商业用途&#xff0c;若有冒犯&#xff0c;请联系处理 反爬前置信息 站点&#xff1a;aHR0cDovLzEyMC4yMTEuMTExLjIwNjo4MDkwL3hqendkdC94anp3ZHQvcGFnZXMvaW5mby9wb2xpY3k 接口&#xff1a;/xjzwdt/rest/xmzInfoDeliveryRest/getInfoDe…

AI驱动的零售未来:打造无缝、智能、个性化的购物新世界

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 Shelly AI 工具集&#xff1a; 100个AI&am…

【私有云盘搭建】Portainer CE部署NextCloud,轻松实现公网访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Linux系统查看磁盘占用情况】

文章目录 概要df 命令du 命令ls 命令 概要 在 Linux 系统中&#xff0c;查看磁盘占用情况可以使用以下几种常用的命令&#xff1a;df查看系统磁盘空间&#xff1b;du&#xff1a;查看目录的磁盘使用情况&#xff1b;ls&#xff1a;列出目录内容的基本命令 df 命令 可以显示文…

JAVA就业笔记7——第二阶段(4)

课程须知 A类知识&#xff1a;工作和面试常用&#xff0c;代码必须要手敲&#xff0c;需要掌握。 B类知识&#xff1a;面试会问道&#xff0c;工作不常用&#xff0c;代码不需要手敲&#xff0c;理解能正确表达即可。 C类知识&#xff1a;工作和面试不常用&#xff0c;代码不…

Gin框架操作指南08:日志与安全

官方文档地址&#xff08;中文&#xff09;&#xff1a;https://gin-gonic.com/zh-cn/docs/ 注&#xff1a;本教程采用工作区机制&#xff0c;所以一个项目下载了Gin框架&#xff0c;其余项目就无需重复下载&#xff0c;想了解的读者可阅读第一节&#xff1a;Gin操作指南&#…

【C++】红黑树模拟实现map和set

本篇基于上篇红黑树的代码来实现&#xff1a; 【C】红黑树-CSDN博客 关于map和set可以看&#xff1a;​​​​ 【C】map和set的介绍和使用-CSDN博客 改造红黑树 map底层是红黑树的KV模型&#xff0c;set是红黑树的K模型&#xff0c;按理来说&#xff0c;应该设计两种红黑树来…

企业培训平台开发指南:基于在线教育系统源码的实现路径解析

本篇文章&#xff0c;小编将通过对在线教育系统源码的解读&#xff0c;深入探讨企业培训平台的开发路径&#xff0c;帮助企业高效构建适合自身需求的培训系统。 一、企业培训平台的需求分析 在开发企业培训平台之前&#xff0c;首先要对企业的实际需求进行充分分析。每个企业…

各种开发编程软件的下载方法--visio,navicat,pycharm,matlab等

各类开发编程类软件的下载方法 一、需要付费的 之前在网络上有很多显示可以免费下载的软件&#xff0c;不是各种在解压时需要密码的&#xff0c;就是有各种病毒的&#xff0c;绕一圈可能还得收费。 最早之前用的是 “A软件安装管家” 这个公众号里的&#xff0c;后来停更了&…

【优选算法篇】双指针的华丽探戈:深入C++算法殿堂的优雅追寻

文章目录 C 双指针详解&#xff1a;进阶题解与思维分析前言第一章&#xff1a;有效三角形的个数1.1 有效三角形的个数示例 1&#xff1a;示例 2&#xff1a;解法一&#xff08;暴力求解&#xff09;解法二&#xff08;排序 双指针&#xff09;易错点提示代码解读 第二章&#…