配置vscode的go开发环境,可能花了很多人不少时间,但是一旦熟悉起来,再回头来看时就会觉得简单很多,不管是配置安装还是工程目录。这一篇作为安装好vscode和go环境变量之后的第二篇可以帮助我等新手向前迈出一大步,理解了之后,在以后的使用之中可以避免大多数问题。
这一篇主要介绍两个有关联内容:gopath、module管理包的区别,以及将我们的项目放到一台新机器上编译运行的问题。
一、gopath下的包管理
在上一篇VSCode安装配置Go开发环境时,安装go开发工具包这一步很容易失败,其中介绍的第二种解决办法就是将这些包提前下载了放在指定路径之下。这个指定路径其实就是gopath下第三方包的路径。下面举例来说。
我们在程序中假如要用到一个第三包中的工具,例如"github.com/tidwall/gjson"
这个包(一个解析json数据格式的包),我们就需要在程序导入这个包import "github.com/tidwall/gjson"
,但是这个包并不是在本地,而是在github上,因此我们需要现在终端执行go get "github.com/tidwall/gjson"
命令,将这个包拉取到本地,命令执行结束之后会在gopath/src目录下看到一个github.com的目录,该目录就是存放其他包的目录,也即前面说的指定路径。
再比如这个包"go.uber.org/zap/zapcore"
(一个与日志有关的包),我们要在程序中使用它里面的函数时,就要导入它import "go.uber.org/zap/zapcore"
,同样我们需要先把这个包使用go get
命令拉到本地,这时gopath/src目录下面会有一个go.uber.org的目录,里面放的就是所有以go.uber.org开头的包。
这就是gopath的包管理:需要使用的包先以go get
命令下载到本地,这些包默认都放在gopath/src目录下面,和我们的项目处在同级目录下。在导入包、编译的时候都会从src下面去查找这些包。
但是由于github或者go.uber等访问很慢的问题,基本上go get命令都会执行失败;当然如果你已经成功配置好了vscode的开发环境,并且不是通过搭梯子的方式,那么执行go get命令也不会失败的。
原因就是既然已经配置好了开发环境,那么必定已经安装好了go开发工具包,这些包同样都是放在github或者golang.org上面,和go get命令要下载的包放在同样的位置。
如果go get失败,和上一篇讲的方法一样,设置一下GOPROXY变量吧。
go env -w GOPROXY=</