起因
想给电脑上的Go语言从1.25.5升级到1.26.3,找了一篇文章准备照着做。
按照这篇文章的方法,先从Go语言官网下载指定版本的压缩包后,直接覆盖到原路径。
覆盖完了之后,我一个之前做过的项目文件里,执行go fix,果不其然,直接报错了:
PS D:\某文件> go fix
# internal/abi
D:\Go\src\internal\abi\map_swiss.go:25:2: ctrlEmpty redeclared in this block
D:\Go\src\internal\abi\map.go:25:2: other declaration of ctrlEmpty
D:\Go\src\internal\abi\map_swiss.go:26:2: bitsetLSB redeclared in this block
D:\Go\src\internal\abi\map.go:26:2: other declaration of bitsetLSB
错误原因大概是Go的标准库下存在两个版本的map.go和map_swiss文件。
我尝试卸载掉老版本的Go,直接用Geek工具强制已删除了,神奇的操作让我在坑里越陷越深。
重装
打开Go的下载页面,找到go1.26.3.windows-amd64.msi下载,直接安装。
嗯,不太可能会很顺利,安装包弹了一个窗。
第一反应是,它好像还需要1.25.5版本的安装包。
好吧,那就再下载另一份。
下载结束后,我选择1.25.5的安装包,它居然又报错了!?
我决定直接运行试试,难道真的有什么奇怪的说法?
这是把博主当小日子整呢?好像情况有点不对。
我仔细一看文件名:go1.25.5.windows-arm64.msi
哦,😅 原来是arm64,失敬失敬。
我把go1.25.5.windows-amd64.msi下载后,重复了上面的操作。
这下我又能当Go学长了。