go的编译器会在$GOPATH/src下面寻找对应的模块,src下的每一个目录都可以对应一个模块,目录中的目录也可以是一个模块

    1. ├───main
    2. main.go // 引入utils里面的Name变量
    3. └───model
    4. utils.go // var Name string = "xiao"
    5. // 变量必须是大写,否则报错name not exported by package model
    6. // main.go
    7. package main
    8. import (
    9. "fmt"
    10. // 引包
    11. // 省略GOPATH/src, Go编译的时候会自动在src目录下寻找
    12. "go_code/pointer/model"
    13. )
    14. func main() {
    15. fmt.Println(model.Name) // xiao
    16. }

    GO111MODULE=on
    在GO111MODULE=on,并且已经设置GOPATH的条件下,写的代码在$GOPATH/src下,我想要使用另一个package里面的内容,并且这个package不是标准库,或者说不在GOROOT里(一般我们不会修改GOROOT中的内容)
    编译报错

    1. package go_code/pointer/model is not in GOROOT

    image.png
    解决办法
    方法一:GO111MODULE=off

    1. go env -w GO111MODULE=off
    2. 设置完之后, go env查看
    3. 然后重新编译即可

    第二种方式:使用go mod

    相关链接: https://blog.csdn.net/weixin_44676081/article/details/107279746