cmdgo: “package ... is not in GOROOT“问题解决办法

cmdgo: “package ... is not in GOROOT“问题解决办法,第1张

环境 windows10go1.17 问题描述

想在go文件中导入自己写的包中的方法或者变量,结果爆红could not import xxxx

go run的运行结果也是package src/chapter1/other/pkg1 is not in GOROOT (XXXX路径)

问题解决方法

这里我们使用了go mod进行包路径的管理

GO111MODULE

go env -w GO111MODULE=on  #开启go mod管理,同理off就是关闭

开启之后,我们要import自己的包就会在go.mod路径下进行寻址

目录结构如下

-- 05-go
	-- src
		--chapter1
			-- main.go
			-- other
				--utils.go
				
	--go.mod

go.mod内容如下:

#这里的go.mod是使用go mod init xx生成的,可以看我之前的文章
module 05-go
go 1.17

utils.go 文件内容如下

package other
var Hero string = "hello,World"

因为go.mod里面设置了寻址路径,main.go内容如下

重要的事情,这里的import必须带上go.mod里面的路径,然后再加上导入包的路径

package main

import (
	"05-go/src/chapter1/other"
	"fmt"
)

func main() {
	fmt.Println(other.Hero)
}

此时已经可以正常运行,主要是模块与路径之间的对应关系

疑问?

还有另一种包路径管理模式,就是关闭go mod

go env -w GO111MODULE=off此时会在GOPATH路径下进行搜索,但是我GOPATH未生效,一直提示GOROOT下面找不到,这个如果有大佬知道怎么解决可以告知一下,环境变量已经配置了GOPATH了

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/989582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存