去评论
海欣资源

遇到cmd/go: “package ... is not in GOROOT“怎么解决

ss8988
2022/04/23 19:11:47
想在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
image-20211119200834129
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了