没有输出的输入是不完整的

0%

golang-bug-sf-IsExported-undefined

通过升级golang版本为1.17.X解决sf.IsExported undefined问题。

问题描述

在编写项目的时候,通过go build命令生成可执行二进制文件时候,碰见sf.IsExported undefined问题。

经过查询,主要是github-issue,可以发现大概率是golang版本问题,问题出现在golang1.16.X。

解决方案

当时将 Go 升级到 1.17.X 即可,因为 reflect.StructField.IsExported 是 Go 1.17 新增的方法。下面保留 Go 1.17.7 的历史多版本示例;新项目请选择仍受支持、满足依赖要求的 Go 版本。

但是考虑到系统内其他的项目可能仍然需要原来的golang1.16版本,所以要设置系统对于多版本golang的支持。

详细命令

先确认下面的目标目录用于本次新安装,且 /usr/local/bin/go117 尚不存在,避免覆盖已有版本。同时把 /usr/local/bin 加入 PATH,方便后面直接调用 go117。

1
2
3
4
5
6
wget https://go.dev/dl/go1.17.7.linux-amd64.tar.gz

sudo mkdir -p /usr/local/go117
sudo tar -C /usr/local/go117 -xzvf go1.17.7.linux-amd64.tar.gz

sudo ln -s /usr/local/go117/go/bin/go /usr/local/bin/go117

安装完成后,可以分别查看这两个版本:

1
2
go version
go117 version

通过go117 build命令重新编译项目,上述碰到的问题得到解决。

PS: 一定要善于使用搜索引擎啊!!!