登录
首页 >  Golang >  Go问答

WSL 缺少 Golang time.Time 方法

来源:stackoverflow

时间:2024-04-26 11:45:37 249浏览 收藏

今天golang学习网给大家带来了《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-gettar 卸载并重新安装不同版本的 go for ubuntu。

我不确定为什么它不能正常工作,并且希望其他人可能有任何见解。

谢谢!

go env(windows-cmd):

set go111module=
set goarch=amd64
set gobin=
set gocache=c:\users\\appdata\local\go-build
set goenv=c:\users\\appdata\roaming\go\env
set goexe=.exe
set goexperiment=
set goflags=set gohostarch=amd64
set gohostos=windows
set goinsecure=
set gomodcache=c:\users\\go\pkg\mod
set gonoproxy=
set gonosumdb=
set goos=windows
set gopath=c:\users\\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\\documents\firmware\git\\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\\appdata\local\temp\go-build2245089512=/tmp/go-build -gno-record-gcc-switches

去环境(wsl-ubuntu):

GOARCH="amd64"
GOBIN=""
GOCACHE="/home//.cache/go-build"
GOENV="/home//.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home//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//Documents/Firmware/Git//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 中引入。

如果您想安装多个版本,请参阅:https://go.dev/doc/manage-install

其他:https://go.dev/doc/install

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《WSL 缺少 Golang time.Time 方法》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>