WSL环境下Golang time.Time类型UnixMilli方法缺失问题求助
问题根因
time.Time.UnixMilli() 是 Go 1.17 版本才正式加入标准库的方法,从你提供的环境信息可以看到:
- Windows 环境使用的 Go 版本为 1.17.3,满足方法要求,因此编译运行正常
- WSL Ubuntu 环境使用的 Go 版本为 1.13,版本远低于要求,因此会抛出方法未定义的错误,和WSL本身运行环境无关,完全是Go版本差异导致的问题。
解决步骤
方案1:升级WSL侧的Go版本(推荐,保持跨环境版本一致)
- 先彻底卸载原有旧版本Go,避免版本冲突:
sudo apt-get purge --auto-remove golang-go golang-1.13*
- 安装和Windows侧一致的Go 1.17.3版本:
- 下载对应linux-amd64架构的Go 1.17.3压缩包
- 解压到系统目录:
sudo tar -C /usr/local -xzf go1.17.3.linux-amd64.tar.gz
- 配置环境变量,在
~/.bashrc(或你使用的shell对应配置文件,如~/.zshrc)末尾添加如下内容:
export PATH=$PATH:/usr/local/go/bin export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
- 重载配置生效:
source ~/.bashrc
- 验证安装结果,执行
go version确认输出为go version go1.17.3 linux/amd64,再重新编译项目即可正常运行。
方案2:兼容低版本Go的代码修改
如果你暂时不需要升级WSL侧的Go版本,可以直接修改代码替换方法,效果完全一致:
将原有代码
time.Now().UnixMilli()
替换为
time.Now().UnixNano() / 1e6
该写法支持所有Go 1.x版本,无需升级环境即可正常编译运行。
额外注意事项
可以检查项目根目录下的go.mod文件,确认go指令标注的版本不低于1.17,避免后续跨环境编译出现版本校验报错。
内容的提问来源于stack exchange,提问作者Kapokupa
相关产品推荐
相关产品推荐

