环境
  • windows10
  • go1.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

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了

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐