英文:
Package is not in GOROOT
问题
main.go:5:2: 包greetings不在GOROOT中(C:\Program Files\Go\src\greetings)
我正在阅读《Head First Go》,书中写道要在c:/users/username/go/src/packagename和c:/users/username/go/src/project_name中创建文件夹。
当我尝试从project_name文件夹中运行go run main.go
时,出现了以下错误:
main.go:5:2: 包greetings不在GOROOT中(C:\Program Files\Go\src\greetings)
我在C盘上不想保存代码。我想从D盘运行代码,这可能吗?我该如何做到?
英文:
main.go:5:2: package greetings is not in GOROOT (C:\Program Files\Go\src\greetings)
I am reading Head first go and it was written to create folder in c:/users/username/go/src/packagename and c:/users/username/go/src/project_name
when i try to run
go run main.go
from project_name folder, i got the following error.
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
I dont want to keep the code in c drive. I want to run codes from D:/ is that possible? How can i do that?
答案1
得分: 16
以下是翻译好的内容:
set GO111MODULE=off
和 set GOPATH
到所需的位置也可以正常工作。
go env -w GO111MODULE=off
和
set GOPATH=D:\go
这个方法解决了我的问题。
英文:
set GO111MODULE=off
and set GOPATH
to desired location is also working good.
go env -w GO111MODULE=off
and
set GOPATH=D:\go
This one fixed my problems.
答案2
得分: 6
你可以使用go mod,并明确给出要初始化的模块的路径。
根据文档:
Init会初始化并在当前目录下写入一个新的go.mod文件,实际上是在当前目录下创建一个新的模块。go.mod文件不能已经存在。如果可能的话,init会从导入注释(参见'go help importpath')或版本控制配置中猜测模块路径。如果要覆盖这个猜测,可以提供模块路径作为参数。
示例:
'go mod init example.com/m' 用于初始化一个v0或v1模块
'go mod init example.com/m/v2' 用于初始化一个v2模块
关于如何设置你的Go程序的更多详细信息可以在这里找到。
英文:
You can use go mod and explicitly give the path to the module you want to initialize.
From Documentation
> Init initializes and writes a new go.mod to the current directory, in
> effect creating a new module rooted at the current directory. The file
> go.mod must not already exist. If possible, init will guess the module
> path from import comments (see 'go help importpath') or from version
> control configuration. To override this guess, supply the module path
> as an argument.
Example
'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
Further details on how to setup your go-program can be found here.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论