【golang】在vs code布置中的一些踩坑与解法(win10)

golang简介

没有过多实战不做介绍。

使用原因

高中毕业后我就一直在用python,作为一种非常直觉化的语言,又有大量库进行辅助,python应该可以算为数不多的万能工具,它能比r,matlab的使用范围更广,比真正的编程语言门槛更低。 但是python的问题也是存在的,对库的严重依赖让python的学习路线有很强的割裂感,到后期完全就是在考验背库能力(学习python不是很推荐自己造轮子),写出的代码感觉有点像是戴着项圈跳舞,我不是很喜欢这种感觉。 golang与python有些相似度(至少比起rust来说,golang能够保持在我多少能理解一些的情况),据我看到的有一些python项目也在用golang重构,感觉golang可以算python玩家最不错的接盘侠了(?),但是问题也是存在的,比起python已经非常完善的一键布置,golang在windows下的配置过程可以说让我非常狼狈,所以想来给大家谢谢我的一些踩坑记录。

golang布置

下载

推荐在中文社区下载,我选择了msi文件,zip大概可以直接解压使用?整个流程只有选择下载路径,布置起来还是挺快的,如果默认安装的话应该不会出太多问题的,但是把东西一股脑塞进C盘是个不好的习惯,我选择了放在D:\golang位置,于是灾难开始了。 为方便后文描述,假设[path]=D:\golang教程中只教了以下代码:

C:\> $env:GO111MODULE = "on"
C:\> $env:GOPROXY = "https://goproxy.cn"
C:\> go env

打开powershell一通复制粘贴,虽然能看见GO111MODULEGOPROXY被改变了,但是重新打开进行go env会发现需要重新设置,故不推荐以这种方式进vscode下载文件搜索编辑系统环境变量,在环境变量中如下新建后填写上面的信息:

完成后不要急着打开vscode,注意观察GOMODCACHE,GOPATH,GOROOT,GOTOOLDIR位置是否设置在自己的文件位置下,继续新建系统变量,使:

C:\> $GOMODCACHE = "[path]\pkg\mod"
C:\> $GOROOT = "[path]"
C:\> $GOTOOLDIR = "[path]\pkg\tool\windows_amd64"

GOPATH已经在上方的用户变量处设置好了,即使在系统变量重新设置也无法更改,所以直接对用户变量修改变量值:

继续选择Path,选择编辑,相对路径%USERPROFILE%\go\bin也需要改为[path]\bin,完成后最好将它上移一些位置,避免微软商城搞类似python那样的骚操作,全部完成后记得确认。 如果不改这些东西,vscode会将文件全部下载到新建的C:\User\User_name\go位置,然后出现乱七八糟的报错,管理起来也会很麻烦。

配置

打开vscode,在扩展中搜索下载排在最上方的Go,如果这是python语言,现在已经可以正常运行了。随便新建个test.go文件,尝试写点代码运行一下:

package main
import "fmt"
func main() {
    fmt.Println("test")
}

写的时候会弹出通知,选择Install All等它慢慢下载,以下是工具正常下载的截图:

完成后还是不能运行,经报错提示还需要一个go.mod文件,可以在终端用代码生成:

go mod init github.com/rocksun/hellogo

尝试F5运行一下代码:

能跑起来,之前打开时package main报过一些奇怪的错误,被标注了波浪双横线,内容大概是:

gopls was not able to find modules in your workspace.
……

神奇的是代码依旧是可以运行的,于是没怎么管,重新打开时弹出需要安装什么东西,果断Install All,重新运行时就没再报错了。

golang
302 views
Comments
登录后评论
Sign In
·

感谢分享

·

开发还是 Linux 方便

·

在苹果上还会有一个问题,就是没有创建文件夹的权限,还得自己创建

·

使用 PowerShell 永久修改环境变量 - 知乎 (zhihu.com)给你个链接吧,可以用powershell改env,评论里还有个其他的点如果涉及可以参考一下

或者直接用go提供的命令(永久修改),如go env -w GO111MODULE=on,修改的是GOENV的文件

usage: go env [-json] [-u] [-w] [var ...]

Env prints Go environment information.

By default env prints information as a shell script
(on Windows, a batch file). If one or more variable
names is given as arguments, env prints the value of
each named variable on its own line.

The -json flag prints the environment in JSON format
instead of as a shell script.

The -u flag requires one or more arguments and unsets
the default setting for the named environment variables,
if one has been set with 'go env -w'.

The -w flag requires one or more arguments of the
form NAME=VALUE and changes the default settings
of the named environment variables to the given values.

For more about environment variables, see 'go help environment'.