go的编译器会在$GOPATH/src下面寻找对应的模块,src下的每一个目录都可以对应一个模块,目录中的目录也可以是一个模块
├───main
│ main.go // 引入utils里面的Name变量
│
└───model
utils.go // var Name string = "xiao"
// 变量必须是大写,否则报错name not exported by package model
// main.go
package main
import (
"fmt"
// 引包
// 省略GOPATH/src, Go编译的时候会自动在src目录下寻找
"go_code/pointer/model"
)
func main() {
fmt.Println(model.Name) // xiao
}
GO111MODULE=on
在GO111MODULE=on,并且已经设置GOPATH的条件下,写的代码在$GOPATH/src下,我想要使用另一个package里面的内容,并且这个package不是标准库,或者说不在GOROOT里(一般我们不会修改GOROOT中的内容)
编译报错
package go_code/pointer/model is not in GOROOT
解决办法
方法一:GO111MODULE=off
go env -w GO111MODULE=off
设置完之后, go env查看
然后重新编译即可
第二种方式:使用go mod
相关链接: https://blog.csdn.net/weixin_44676081/article/details/107279746