Golang项目如何引用一个第三方的库
Golang项目如何引用一个第三方的库?写好test.go文件后执行go run test.go的时候报错,其实是因为golang配置或者自己的项目没有配置正确。
1、首先,安装完Golang之后,需要配置一些系统变量,就像Java一样【这点没有Python方便,Python是开箱即用】。其中最重要的变量是GOPATH(必须大写),这个变量是一个目录的绝对地址,Go语言使用这个目录进行第三方库和代码的管理,对于我们的代码中引用的第三方包,例如gin等,Go语言系统会去两个目录找这个第三方库:一个是GOROOT变量指向的目录(也就是Go语言的安装目录)下的pkg目录,一个是GOPATH指向的目录下的pkg/mod子目录。若这两个目录都找不到第三方库,就会报错。
对于Windows系统的配置Go语言变量方法有两种:
- 一种是使用go env命令,例如go env -w GOPATH=D:\\MyGoPathDIR,env是打印变量,加上-w选项表示写入,这里是设置GOPATH变量的值为D:\MyGoPathDIR目录
- 另外一种是设置windows的环境变量,在控制面板里添加一个GOPATH的系统变量,其值设置为D:\MyGoPathDIR,保存即可。
这两种方法都可以,但当两种方法设置的同一个变量的值不一致时,go语言系统会优先选择windows的环境变量。
2、如果是简单的代码,不需要引用第三方的包,其实直接写个xxx.go文件,然后go run xxx.go就可以,但如果需要引用第三方的库,比如xxx.go引用了gin,那么必须建立工程项目。
- 建立项目的方法是,先建立一个空目录, 然后在该目录下执行"go mod init 项目名"的命令,这样golang会自动在该目录下生成一个go.mod的文件。然后执行 go run xxx.go时,系统会提示找不到github.com/gin-gonic/gin,然后提示你使用go get命令去下载,你执行go get github.com/gin-gonic/gin命令,就会自动去下载gin,下载下来的文件会保存在GOPATH指向的目录的pkg/mod子目录下,go.mod文件的内容也会加上"require github.com/gin-gonic/gin v1.7.2 // indirect" 表示 这个项目依赖下载的github.com/gin-gonic/gin这个项目。你再次执行go run xxx.go时就可以成功执行了
- 这其中golang为什么能自动去下载?这需要我们配置一个系统变量GO111MODULE,把其值设置为on,表示我们启用了go的module功能(这类似Java的maven功能,就是自动解决第三方依赖的一个工具),就会去自动下载,设置为auto(默认值),go将会根据当前目录来决定是否启用module功能。
- 对于国内,我们还可以设置第三个变量GOPROXY来加速这个下载过程,这个变量是指向一个代理服务器,设置GOPROXY=https://goproxy.cn,direct,表示从https://goproxy.cn这个域名(七牛云)取下载第三方的库,比直接去github下载更快。
详情请参考:https://studygolang.com/articles/28712