go多版本管理

go,版本,管理 · 浏览次数 : 250

小编点评

## 解决方案方案 1. **使用环境变量** * 创建一个名为 `GO_VERSION` 的环境变量,并将其设置为要使用的 Go 版本。 * 在项目的 `build.go` 文件中,使用 `Getenv` 获取 `GO_VERSION` 并将其赋值给 `GO_VERSION` 变量。 ```go package main import ( "os" "os/exec" ) var goVersion string func main() { goVersion := os.Getenv("GO_VERSION") if goVersion == "" { goVersion = "1.17" // 默认版本 } // 使用 Go 版本 cmd := exec.Command("go", "version") output, err := cmd.Output() if err != nil { panic(err) } fmt.Println(output) } ``` 2. **使用 Go version manager** * 许多 Go 版本管理器可以帮助您管理多个版本的 Go 版本,例如 `go version manager` 和 `gobuster`。 * 使用这些工具,您可以在命令行中选择要使用的 Go 版本。 3. **使用 Go versioned packages** * 许多第三方库提供版本已确定的 Go 版本,您可以使用 `go get` 命令下载并使用指定版本。 * 例如,`github.com/go/go1.17/pkg` 提供 Go 1.17 版本的库。 **注意:** * 以上方案可能需要在不同的项目中进行调整,例如在生产环境中,您可能需要使用更稳定的 Go 版本。 * 确保您在使用不同 Go 版本之前清理您的本地 Go 安装。

正文

在日常开发工作过程中,很多时候我们都需要在自己的机器上安装多个go版本,像是go1.16引入的embed,go1.18引入了泛型;又或是自己本地使用的是最新版,但公司的项目中使用的go1.14、go1.13甚至是更早的版本。

那么有没有既不影响我们自己的本地环境,又能兼顾历史项目的办法呢?答案当然是肯定的:有!!!我这里介绍下官方的方案

以我本地的环境为例,我使用的是go1.20.4,项目中使用的是go1.17,具体操作如下:

# 查看本地本部
$ go version
go version go1.20.4 linux/amd64

# 安装指定的发行版本
$ go install golang.org/dl/go1.17.12@latest
go: downloading golang.org/dl v0.0.0-20230502172222-5216546bad51
$ go1.17.12 download
Downloaded   0.0% (    16384 / 135035038 bytes) ...
Downloaded   0.8% (  1032192 / 135035038 bytes) ...
Downloaded   2.5% (  3375088 / 135035038 bytes) ...
......
Downloaded  98.0% (132284400 / 135035038 bytes) ...
Downloaded  99.6% (134561792 / 135035038 bytes) ...
Downloaded 100.0% (135035038 / 135035038 bytes)
Unpacking /root/sdk/go1.17.12/go1.17.12.linux-amd64.tar.gz ...
Success. You may now run 'go1.17.12'

# 验证
$ go1.17.12 version
go version go1.17.12 linux/amd64

至此,多版本的go环境就已经安装完成了,使用的时候只需要指定相应的go版本即可:

# 使用go1.20
$ go build
# 使用go1.17
$ go1.17.12 build

孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意


与go多版本管理相似的内容:

go多版本管理

在日常开发工作过程中,很多时候我们都需要在自己的机器上安装多个go版本,像是go1.16引入的embed,go1.18引入了泛型;又或是自己本地使用的是最新版,但公司的项目中使用的go1.14、go1.13甚至是更早的版本。 那么有没有既不影响我们自己的本地环境,又能兼顾历史项目的办法呢?答案当然是

client-go实战之六:时隔两年,刷新版本继续实战

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 时隔两年,《client-go实战》被激活,更多内容将会继续更新 时间过得真快,《client-go实战》系列已是两年前的作品,近期工作中再次用到clie

Modbus动态链接库供多语言使用 | Go

Modbus协议控制动态链接库 应用场景 基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题, 而且对modbus协议存在比较多的细节处理,可以查看modbus slave、或者modbus poll中相关的配置可知, 数据类型对应读写寄存器个数、大小端的处

Dubbo3应用开发—XML形式的Dubbo应用开发和SpringBoot整合Dubbo开发

Dubbo3程序的初步开发 Dubbo3升级的核心内容 易⽤性 开箱即⽤,易⽤性⾼,如 Java 版本的⾯向接⼝代理特性能实现本地透明调⽤功能丰富,基于原⽣库或轻量扩展即可实现绝⼤多数的 微服务治理能⼒。更加完善了多语言支持(GO PYTHON RUST) 超⼤规模微服务实践 ⾼性能通信(Tripl

star 最多的 Go 语言本地化库|GitHub 2.8K

今天讲讲 i18n,无论是 ToB 还是 ToC 的业务,常常存在多语言的需求,由于用户有时来自不同国家,因此需要对页面展示内容,包括响应结果做多语言的适配。

可视化—gojs 超多超实用经验分享(三)

目录32.go.Palette 一排放两个33.go.Palette 基本用法34.创建自己指向自己的连线35.设置不同的 groupTemplate 和 linkTemplate36.监听在图形对象 GraphObject 上的右键单击37.定义节点/连线/canvas 背景上的右键菜单38.从节

Go 使用原始套接字捕获网卡流量

Go 使用原始套接字捕获网卡流量 Go 捕获网卡流量使用最多的库为 github.com/google/gopacket,需要依赖 libpcap 导致必须开启 CGO 才能够进行编译。 为了减少对环境的依赖可以使用原始套接字捕获网卡流量,然后使用 gopacket 的协议解析功能,这样就省去了解析

go高并发之路——go语言如何解决并发问题

一、选择GO的原因 作为一个后端开发,日常工作中接触最多的两门语言就是PHP和GO了。无可否认,PHP确实是最好的语言(手动狗头哈哈),写起来真的很舒爽,没有任何心智负担,字符串和整型压根就不用区分,开发速度真的是比GO快很多。现在工作中也还是有一些老项目在使用PHP,但21年之后的新项目基本上就都

2024-06-19:用go语言,给定一个起始下标为 0 的整数数组 nums 和一个整数 k, 可以执行一个操作将相邻两个元素按位AND后替换为结果。 要求在最多执行 k 次操作的情况下, 计算数组

2024-06-19:用go语言,给定一个起始下标为 0 的整数数组 nums 和一个整数 k, 可以执行一个操作将相邻两个元素按位AND后替换为结果。 要求在最多执行 k 次操作的情况下, 计算数组中所有元素按位OR后的最小值。 输入:nums = [3,5,3,2,7], k = 2。 输出:3

Go之流程控制大全: 细节、示例与最佳实践

本文深入探讨Go语言中的流程控制语法,包括基本的if-else条件分支、for循环、switch-case多条件分支,以及与特定数据类型相关的流程控制,如for-range循环和type-switch。文章还详细描述了goto、fallthrough等跳转语句的使用方法,通过清晰的代码示例为读者提供