VSCode+Go+gin安装出现的坑

VSCode+Go+gin安装出现的坑

我安装的golang版本号:
go1.14.1
go muddle

一.Go语言是从1.5开始引入 Vendor 模式,如果项目的目录下有Vendor目录,那么go工具链会优先使用vendor内的包进行编译,测试等;如果没有找到,就会去$GOPATH/src目录下找

二.go module是Go1.11版本之后「官方」退出的版本管理工具,并且从Go1.13版本开始,go module 将是Go语言默认的依赖管理工具;
有了这个工具后,开发项目不仅仅只限制在$GOPATH/src下面了,随便在任意一个方便的文件夹都可以开发项目;

使用方法:
虽然go module是官方默认的依赖管理工具,「因为之前开发的项目,第三方包都是下载于/依赖于$GOPATH/src/github.com/xxx这个地址的」所以为了兼容性性,我们想使用它,还是得先设置环境变量GO111MODULE,通过它可以开启或关闭模块支持,它有三个可选值:off、on、auto;

1.选择on模式:
a.GO111MODULE=off禁用模块支持,编译时会从GOPATH和vendor文件夹中查找包。
b.GO111MODULE=on启用模块支持,编译时会忽略GOPATH和vendor文件夹,只根据 go.mod下载依赖。
c.GO111MODULE=auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持至于设置命令(默认mac/unix):export env -w GO111MODULE=on  即可;开启了之后,项目所需要的第三方包都会通过go module来下载管理,不会放在$GOPATH/src

2.设置完之后:开启代理,因为默认的代理没有在的情况下国内是访问不了的,go env -w GOPROXY=https://goproxy.cn,direct

如下图:
VSCode+Go+gin安装出现的坑_第1张图片

3.在你认为ok的地方建一个项目文件夹,例如:ginTest$ go mod init ginTest(注意后面不要“/”,然后就会在当前项目文件夹下创建一个go.mod文件:creating new go.mod…)

VSCode+Go+gin安装出现的坑_第2张图片

我们在ginTest项目文件夹下新建一个go文件,例如test.go(还是那句话,项目所需要的第三方包都会通过go module来下载管理放在 G O P A T H / p k g / m o d 下 面 , g o g e t 之 后 不 会 放 在 GOPATH/pkg/mod下面,go get之后不会放在 GOPATH/pkg/modgogetGOPATH/src)
$go build(这个过程就会根据test.go文件里面import的包自动去pkg/mod那里获取然后生成一个go.sum文件放在自己当前项目文件夹下,里面包含了所有会引用包的关系以及版本号)
$go run test.go即可

VSCode+Go+gin安装出现的坑_第3张图片

延伸:使用go mod来安装gin框架(总是出现红色波浪线)

VSCode+Go+gin安装出现的坑_第4张图片

  • 第一种方法:
    不使用go mod来安装gin(即是GO111MODULE=off):使用go get -u github.com/gin-gonic/gin,发现一直都是卡住,下载不了这个框架,就算偶尔网络好,能下载,也会出现各种依赖包缺少的问题,很多人会建议缺什么补什么,但是后面才发现,有的版本对不上,所以很折腾;

  • 第二种方法:
    使用go mod来安装gin(即是GO111MODULE=on):一样使用go get -u github.com/gin-gonic/gin,直接下载到pkg/mod里面了;
    注意:我用的是vscode来开发golang,安装好gin框架后,可以正常使用,但是go文件中 import “github.com/gin-gonic/gin” 下面会出现红色的波浪线,关于gin的代码也不会自动补全跟提醒本身有的方法;

VSCode+Go+gin安装出现的坑_第5张图片

我查了很多资料,都没有解决的方法,【当然我的配置没问题】;但是goland这个IDE就不会,后面才看到一些文章说VSCode暂时对module支持还不是特别友好;那怎么搞,后面搞了两天时间,几乎看了各种大神的笔记,试了N次,都搞不定;最后想着转去Goland的,但是要付费;直到仔细看了go mod 中有个vendor的参数,直接使用命令:go mod vendor,把pkg/mod的依赖包复制一份放到项目的vendor文件夹里面;这样才搞定这个恶心的红色波浪线,gin框架的代码也有自动提示功能!如果某些依赖包被墙
则使用:
go build -mod=vendor

你可能感兴趣的:(gin,vscode)