几个常用的环境变量
GOPATH: //go 的工作目录 GOROOT://go 的安装目录 GOBIN://go 的bin文件目录 GO111MODULE: //go mod 开关 on为开启go mod GOPROXY=https://goproxy.cn,direct // https://goproxy.cn,direct 国内代理
因为国内墙的缘故,需要设置代理,这样在Vscode安装package时就不会失败。
go env -w GOPROXY https://goproxy.cn,direct
查看go的设置命令
go env
GOPATH
GOPATH是早期的设置方式,将工作目录设置GOPATH到全局环境变量。
不同的项目都在GOPATH/src/下。很显然这种设置方法是不太方便的,因为不同项目引用的package到放到了一起,这用git管理起来很麻烦,比如A项目引用了a,b两个package,B项目引用了c,d两个package,那么如果我在A中修改了package的内容,我提交A项目时想要带着package时就很麻烦。
其次是GOPATH需要设置全局环境变量,很多新手在对这些不熟悉的时候,很容易出错。项目名也必须不同。否则无法区分。
Go mod
go mod 正是为了解决上述问题(并不单单是上述问题,还有依赖引用问题)。在1.13以后开始推行。因为没多长时间,所以现在网络上的教程两种版本的都有,很容易混淆。
go mod可以完全替代GOPATH设置。只需要 go env -w GO111MODULE=on
开启go mod
GOPATH 与 Go mod 两种模式的项目启动是不相同的
go env -w GO111MODULE=off 时,在 GOPATH 的根目录就可以直接启动项目
go env -w GO111MODULE=off 时,需指进入项目启动程序
调用第三方包的情况下,在当前目录,即使指定了文件路径,仍执行失败
进入项目目录,启动成功
没有引入第三方包,指定路径及启动成功
吐槽一句,这种设计坑真多,小白痛不欲生。
还有就是在安装 gin 框架的时候执行 go get -u github.com/gin-gonic/gin
总是执行失败,不得不说,这次真是被 topgoer.com gin框架/简介 这文档给误导了,文档看上去挺全的,可偏偏没详细介绍 GOPATH 与 Go mod 的区别。
go get -u github.com/gin-gonic/gin
命令在 go mod 模式下完全没问题,但是在 GOPATH 模式下就不正常了。
GOPATH 与 Go mod 两种模式是不兼容的,建议使用 Go mod 模式就好。
更详细参考文档 studygolang.com/articles/28712