Attention please!

GOROOTGOPATH
GOROOTGOPATH
GOROOTGOPATH

0 问题

demo_01gopath

1 区分几个路径

GOROOTGOPATH

go_project // (go_project为 GOPATH目录)
– bin // golang编译可执行文件存放路径
– pkg // golang编译包时,生成的.a文件存放路径
– src // 源码路径。按照golang默认约定,go run,go install等命令的当前工作路径

出错:

 package util is not in GOROOT (D:\MyApp\golang\src\util)
GOPATH
  1. 代码开发必须在go path src目录下,不然,就有问题。
  2. 依赖手动管理
  3. 依赖包没有版本可言
GO111MODULE

模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。

2 GO111MODULE

GO111MODULEoff, on和auto(默认值
GO111MODULE=off GO111MODULE=onGO111MODULE=auto
当前目录在GOPATH/src之外且该目录包含go.mod文件
当前文件在包含go.mod文件的目录下面。

参看文章:go mod使用

3 解决方案

go env

方案一:关闭 go mod 模式

用 gopath 模式引入包从src目录下开始引入,需要

go env -w GO111MODULE=off

方案二:使用go mod 模式

go env -w GO111MODULE=on
go mod init

目录下产生两个文件

go.mod
go.sum

否则就会报错找不到包