今天用vscode去写golang代码,发现通过import倒入gin包的时候,一直显示错误提示,看网站的教程资料使用了go mod 和go get都尝试了。
$ go get -u github.com/gin-gonic/gin
$ go mod tidy
首先了解下go get
和go mod
。golang
在 1.11
版本之前,golang
可以通过go get
命令将三方依赖下载到%GOPATH%\src
中。
go modules
go modules
是golang
自1.11
之后版本出来的一个功能。主要是用于将项目代码与三方的包分割,在 go modules
之前,项目代码放在 %GOPATH%\src
下面,go modules
功能开启之后有下载的三方库代码则放在%GOPATH%/pkg/mod
目录下。下面说下哪些情况下复合go modules
的开启情况:
GO111MODULE
设置为auto
时,当前项目目录不在%GOPATH%/src
下,且带给你钱目录或者上一层项目存在go.mod
文件。GO111MODULE
设置为on
时,开启MODULE
功能,设置为off
时,关闭MODULE
功能。
三方库下载方式
1、 go get pkgname
go get
下载的三方库当未开启 go module
功能时候,放在 %GOPATH%/src
,开启后放在%GOPATH%/pkg/mod
。
2、 go mod download
将下载的项目依赖缓存到本地。
3、tidy
$go mod tidy
使用tidy命令会检测该文件夹目录下所有引入的依赖,并下载依赖,写入到 go.mod
文件中。
3、vendor
$ go mod vendor
导出项目所有的依赖到vendor
目录,从mod
中拷贝到项目的vendor
目录下,通过这种方式可以让vscode
放下依赖,解决我们的vscdoe
报红问题。