golang版本切换的实现
这里针对mod项目,centos环境
事情是由于某些原因我要升级我的golang从1.20.X升级到1.21.X
我的一个目录A安装了1.20(我本人习惯把GOROOT、GOPATH、GOMODCACHE 都放在这个大目录A下),我没想删除它,留着了,在~/.bashrc(centos)配置里写了类似这样
export GOROOT=/A/goroot export GOBIN=$GOROOT/bin export PATH=$PATH:$GOBIN
go env的 GOMODCACHE=/A/cache_dir,这个是用来存放所有下载的go依赖包的地方
然后我要升级嘛,我选择了1.21.13,然后 把上面说的那些东西放在了/B下,然后我就要去改~/.bashrc
export GOROOT=/B/goroot export GOBIN=$GOROOT/bin export PATH=$PATH:$GOBIN
go mod tidy 就会报错
compile: version "go1.20.14" does not match go tool version "go1.21.13"
然后执行了下面
go mod edit -go=1.21.13
依然会报错
github.com/prometheus/client_golang/prometheus imports
google.golang.org/protobuf/types/known/timestamppb tested by
google.golang.org/protobuf/types/known/timestamppb.test imports
github.com/google/go-cmp/cmp/cmpopts: github.com/google/go-cmp@v0.5.7: verifying go.mod: missing GOSUMDB这样的错误,然后我就调研了一下,go mod tidy会做以下事情
- 扫描项目中的所有 .go 文件 - 解析 import 语句 - **检查代码语法**(需要知道 Go 版本) - 根据 go.mod 中的 Go 版本决定支持哪些语言特性 - 添加缺失的依赖,移除不需要的依赖
所以,需要清除这些依赖重新下载,当然我不想清除,以后还得用可能,留着了,就在/B下面建立一个新的cache_dir然后
go env -w GOMODCACHE="/B/cache_dir"
然后go mod tidy 解决问题
然后期间呢,还遇到了点小麻烦,是关于编辑器的,我用的VSCode
在workspcae settings中我设置了
{
"go.goroot": "/A/go",
"go.alternateTools": {},
"go.toolsManagement.go": "/A/go/bin/go"
}所以我即便更改了~/.bashrc,在vscode中开启的终端,仍然是1.20版本,vscode也要跟着一起改哦

最后,很显然,这个更新过程很让人烦躁,而且我感觉只更改了GOMODCACHE仍然会有一些我没遇到的坑,我也相信go的设计不会让版本切换这么难为人,经调研发现了gvm工具,下一篇说
到此这篇关于golang版本切换的实现的文章就介绍到这了,更多相关golang版本切换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
gin框架Context如何获取Get Query Param函数数据
这篇文章主要为大家介绍了gin框架Context Get Query Param函数获取数据,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-03-03
Golang 中的 unsafe.Pointer 和 uintptr详解
这篇文章主要介绍了Golang中的unsafe.Pointer和uintptr详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下2022-08-08
golang 使用chromedp获取页面请求日志network
这篇文章主要为大家介绍了golang 使用chromedp获取页面请求日志network方法实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-11-11


最新评论