当前位置: > > > > WSL 缺少 Golang time.Time 方法
来源:stackoverflow
2024-04-26 11:45:37
0浏览
收藏
今天给大家带来了《WSL 缺少 Golang time.Time 方法》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~
问题内容
当我遇到这个问题时,我一直在用 go 开发一个 cli 工具。当我使用 windows 命令提示符或 powershell 运行该工具时,该工具编译并运行得非常好,但当我尝试使用 wsl(ubuntu 版本 1)时,我收到此错误消息。
time.now().unixmilli undefined(类型time.time没有字段或方法unixmilli)
使用 time.now().unixmilli()
的文件包含包时间 import(..."time"...)
并且它没有在其他地方重新定义,因为代码在 windows 中正确编译和运行终端。因此,我认为它与 linux for windows 有关。
我尝试将 $goroot
和 $gopath
更新到各个不同的位置,包括尝试连接到安装在已安装的 windows 系统上的 /mnt/c/
(这会产生不同的错误,即不知道如何编译哪个这是有道理的,因为它是 go 的 windows 版本)。我还尝试使用 apt-get
和 tar
卸载并重新安装不同版本的 go for ubuntu。
我不确定为什么它不能正常工作,并且希望其他人可能有任何见解。
谢谢!
go env(windows-cmd):
set go111module= set goarch=amd64 set gobin= set gocache=c:\users\<user>\appdata\local\go-build set goenv=c:\users\<user>\appdata\roaming\go\env set goexe=.exe set goexperiment= set goflags=set gohostarch=amd64 set gohostos=windows set goinsecure= set gomodcache=c:\users\<user>\go\pkg\mod set gonoproxy= set gonosumdb= set goos=windows set gopath=c:\users\<user>\go set goprivate= set goproxy=https://proxy.golang.org,direct set goroot=c:\program files\go set gosumdb=sum.golang.org set gotmpdir= set gotooldir=c:\program files\go\pkg\tool\windows_amd64 set govcs= set goversion=go1.17.3 set gccgo=gccgo set ar=ar set cc=gcc set cxx=g++ set cgo_enabled=1 set gomod=c:\users\<user>\documents\firmware\git\<project>\cli\go.mod set cgo_cflags=-g -o2 set cgo_cppflags= set cgo_cxxflags=-g -o2 set cgo_fflags=-g -o2 set cgo_ldflags=-g -o2 set pkg_config=pkg-config set gogccflags=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=c:\users\<user>\appdata\local\temp\go-build2245089512=/tmp/go-build -gno-record-gcc-switches
去环境(wsl-ubuntu):
GOARCH="amd64" GOBIN="" GOCACHE="/home/<user>/.cache/go-build" GOENV="/home/<user>/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/home/<user>/go" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/usr/lib/go-1.13" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/lib/go-1.13/pkg/tool/linux_amd64" GCCGO="gccgo" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="/mnt/c/Users/<user>/Documents/Firmware/Git/<project>/cli/go.mod" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build414455523=/tmp/go-build -gno-record-gcc-switches"
正确答案
您在 WSL 中运行的 go 版本是 1.13,但 UnixMilli
最近才在 go 版本 1.17 中引入。
如果您想安装多个版本,请参阅:
其他:
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《WSL 缺少 Golang time.Time 方法》文章吧,也可关注公众号了解相关技术文章。