1. GOROOT 和GOPATH

  • GOROOT:GOROOT就是Go的安装目录,(类似于java的JDK)
  • GOPATH:GOPATH是我们的工作空间,保存go项目代码和第三方依赖包

GOPATH可以设置多个,其中,第一个将会是默认的包目录,使用 go get 下载的包都会在第一个path中的src目录下,使用 go install时,在哪个GOPATH中找到了这个包,就会在哪个GOPATH下的bin目录生成可执行文件

2.GOPATH

使用GOPATH时,GO会在以下目录中搜索包:

  1. GOROOT/src:该目录保存了Go标准库代码。
  2. GOPATH/src:该目录保存了应用自身的代码和第三方依赖的代码。

go的一些其他路径
bin:存放编译后的exe文件
pkg:存放自定义包的目录
src:存放项目源文件的目录

3.go env 打开GO111MODULE

export GO111MODULE=on
GO111MODULE 有三个值:off, on和auto(默认值)。

GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:

  • 当前目录在GOPATH/src之外且该目录包含go.mod文件
  • 当前文件在包含go.mod文件的目录下面。

总结:

用了go mod 就不需要把项目添加进GOPATH的src目录
如果需要引用本地的包就早go.mod 使用
replace github.com/Yekai2233/mytest => /Users/yekai/goworkspace/godict