【问题标题】:Package is not in GOROOT包不在 GOROOT 中
【发布时间】:2021-08-08 02:17:02
【问题描述】:

ma​​in.go:5:2: 问候包不在 GOROOT (C:\Program Files\Go\src\greetings)

我正在阅读 Head first go,它是为了在 c:/users/username/go/src/packagename 和 c:/users/username/go/src/project_name 中创建文件夹而编写的

当我尝试运行时

go run main.go 来自 project_name 文件夹,我收到以下错误。 main.go:5:2: package greetings is not in GOROOT (C:\Program Files\Go\src\greetings)

C:\Users\agriz>go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\agriz\AppData\Local\go-build
set GOENV=C:\Users\agriz\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\agriz\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\agriz\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.16.7
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
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 -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\agriz\AppData\Local\Temp\go-build2047492330=/tmp/go-build -gno-record-gcc-switches

我不想将代码保存在 C 盘中。我想从 D:/ 运行代码,这可能吗?我该怎么做?

【问题讨论】:

  • 提示:不要使用 go run file 文件名参数。
  • :-( 只是dont use 没有帮助我。你能告诉我为什么吗?你的意思是用install 代替吗?如果是,你能解释一下原因吗?
  • 我为这个世界感到骄傲。他们对投反对票表现出极大的兴趣。帮助他人的兴趣减少。美丽的世界。
  • 您使用 go build 编译 Go 代码并执行生成的可执行文件。如果您来自脚本语言并且无法忍受编译步骤,请使用go rungo run .

标签: go


【解决方案1】:
Go Language推荐的答案

您可以使用 go mod 并明确给出要初始化的模块的路径。

来自文档

Init 初始化并写入一个新的 go.mod 到当前目录,在 效果创建一个以当前目录为根的新模块。文件 go.mod 必须不存在。如果可能,init 会猜测模块 来自 import cmets 的路径(参见“go help importpath”)或来自版本 控制配置。要覆盖此猜测,请提供模块路径 作为论据。

例子

   'go mod init example.com/m' to initialize a v0 or v1 module
   'go mod init example.com/m/v2' to initialize a v2 module

有关如何设置 go-program 的更多详细信息,请访问 here

【讨论】:

    【解决方案2】:

    set GO111MODULE=offset GOPATH 到所需位置也可以正常工作。

    go env -w GO111MODULE=off
    

    set GOPATH=D:\go
    

    这个解决了我的问题。

    【讨论】:

    • 您能解释一下为什么会这样吗?GO111MODULE 有什么问题?
    猜你喜欢
    • 2021-10-31
    • 2021-01-30
    • 2021-04-10
    • 2021-06-18
    • 1970-01-01
    • 2020-09-02
    • 2022-01-23
    • 2021-03-13
    • 1970-01-01
    相关资源
    最近更新 更多