文章目录
一、由来
韩顺平老师❤️的Go语言核心编程中第p389视频中提到了VScode安装插件,其Go版本为1.9.2(由p12的25分42秒可知),但是由于由于国内网络的原因,对于一些golang的开发包下载不成功,且并不能按照视频所述方法流畅安装插件。因此,本文特此记录一下踩过的坑。此外,以下文中的GO版本为1.15.6
。
二、 正文
Q1:Win10设置GOPATH 后不生效
浅细色字体为流水账 😃
打开VScode按默认提示安装插件,虽然过程爽歪歪,但结果就是一个都没装上 😏。然后开始看提示的报错信息,发现GOPATH和我记忆中的不一样,竟然在C盘😱。。。
- 通过操作1:
go env
查看当前GO环境信息,显示GOPATH在C盘 - 通过操作2:(此电脑->属性->高级系统设置->环境变量)去看了环境变量,在D盘另一个路径,是我想要的存储路径
靓仔语塞😖,为什么操作2中的设置不起作用呢?
1、原因分析
并没有找到原因,反正安装GO环境后,通过操作2设置的GOPATH就是失效了,有知道的大兄弟,评论一下啊 😋
2、解决方案
- 1.打开命令提示符(Win+r然后键入cmd)或Powershell窗口(Win+ i)。
- 2.输入
setx GOPATH %USERPROFILE%\go
。(这会将设置GOPATH为路径%USERPROFILE%\go
,例如setx GOPATH E:\study\go
) - 3.关闭命令或PowerShell窗口。(环境变量仅适用于新命令或PowerShell窗口,不适用于当前窗口)
注意:第3点非常重要!!!
做完第二步之后,就去go env
,GOPATH是不会变的,不要问我怎么知道的😠
Q2:VSCODE安装GOLANG插件
1、原因分析
GOPATH失效的问题终于解决了,但是插件仍然没装上呢
2、解决方案
对于一些golang的开发包下载不成功,针对这个情况,go在1.13版本中,添加了如下两个环境变量:
GO111MODULE // 设置go module
GOPROXY // 设置代理服务器
此时,问题迎刃而解
解决方案综述:
- 配置代理:配置代理大全
- 在终端实施原本的git操作或者vscode傻瓜式安装应该也可成功
1.运行 go env -w GO111MODULE=on //开启mod
运行 go env -w GOPROXY=https://goproxy.cn,direct //设置七牛云goproxy代理
2.进入GOPATH目录,创建src/golang.org/x/目录,进入src/golang.org/x/目录
git clone https://github.com/golang/tools.git
git clone https://github.com/golang/lint.git
3.然后就可以在vscode中按提示安装go的插件了(install all爽歪歪)
或者在%GOPATH%/src目录的终端下执行以下命令(不成功的包按vscode提示指令执行即可)
go get -u -v github.com/mdempsky/gocode
go get -u -v github.com/uudashr/gopkgs/cmd/gopkgs
go get -u -v github.com/ramya-rao-a/go-outline
go get -u -v github.com/acroca/go-symbols
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/go-delve/delve/cmd/dlv
go get -u -v github.com/stamblerre/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/sqs/goreturns
go get -u -v golang.org/x/lint/golint
go get -u -v github.com/cweill/gotests/...
go get -u -v github.com/fatih/gomodifytags
go get -u -v github.com/josharian/impl
go get -u -v github.com/davidrjenni/reftools/cmd/fillstruct
go get -u -v github.com/haya14busa/goplay/cmd/goplay
go get -u -v github.com/godoctor/godoctor
go install , go build 与 go get ,git clone之间的区别
GOPATH和GOROOT相关
GOROOT 指向系统安装路径,GOPATH指向工作路径
GOROOT = C:\Go
GOPATH = D:\MyWorks
其中,go语言源代码和编译的中间文件、目标文件存放位置如下:
C:\Go <<--- GOROOT 指向的位置
--src <<--- Go 语言自带的源代码
--pkg <<--- 编译的中间文件放在此文件夹
--bin <<--- 编译的目标文件放在此文件夹
D:\MyWorks <<--- GOPATH 指向的位置
--src <<--- 项目源代码放置在此文件夹。!!!警告:一个常犯的错误是把 GOPATH 指向此处!!!
--vendor <<--- 第三方开源代码文件夹
--github.com
--...
--pkg <<--- 编译的中间文件放在此文件夹,Go编译器自动生成此文件夹
--bin <<--- 编译的目标文件放在此文件夹,Go编译器自动生成此文件夹
- Go 将所有代码保管在同一个工作空间,并期望所有代码都在同一个工作空间。这个地方由环境变量 GOPATH 来标识。对你来说这意味着什么?意味着你必须将代码放在默认的工作空间或者必须修改 GOPATH 环境变量,指向你自己的代码位置。
- 不管哪种方式,项目的真正源代码都需要放在 src 子目录下
(即$GOPATH/src/your_project
或$GOPATH/src/github.com/your_github_username/your_project
)。 - 技术上讲,如果你无需导入外部包且使用相对路径导入自己的代码,你的工程不一定非要放在工作空间里,但不推荐这样做。
- Go语言的中对于包依赖的路径是相对于
$GOPATH/src
的路径
参考传送门
三、 总结
没什么总结的,睡去了🌜