配置VSCode Go语言环境 | 青训营

155 阅读3分钟
  1. 下载Go二进制文件: 在Go官方网站下载适合操作系统(macOS)的Go二进制文件。
  2. 安装Go: 打开下载的Go二进制文件并按照安装向导完成Go的安装。一般情况下,安装过程会将Go安装到/usr/local/go目录下,并将Go的二进制文件(例如go、gofmt等)安装到/usr/local/go/bin目录下。
  3. 设置环境变量: 为了在终端中使用Go命令,需要将Go的二进制文件路径添加到系统的环境变量PATH中。
  4. 生效环境变量: 在终端中输入以下命令,使新的环境变量生效:
bashCopy code
source ~/.bash_profile
  1. 验证安装: 在终端中输入以下命令,验证Go是否成功安装:
goCopy code
go version

如果输出Go的版本信息,说明安装成功。

  1. 创建Go Module: 如果使用Go 1.11及以上版本,可以选择在项目目录下通过go mod init来初始化一个新的Go模块,这将启用Go Module特性,并用于包管理。

VSCode安装Go tools失败的问题

测试环境

❯ go version
go version go1.20.6 darwin/arm64 
❯ sw_vers
ProductName:macOS
ProductVersion:12.6
BuildVersion:21G115

安装go tools时,出现错误(原错误提示未保存,找到一个类似的):

go.toolsGopath setting is not set. Using GOPATH /Users/l2m2/go
Installing 17 tools at /Users/l2m2/go/bin in module mode.
gocode
gopkgs
go-outline
go-symbols
guru
gorename
gotests
gomodifytags
impl
fillstruct
goplay
godoctor
dlv
gocode-gomod
godef
goimports
golint
​
Installing github.com/mdempsky/gocode FAILED
Installing github.com/uudashr/gopkgs/v2/cmd/gopkgs FAILED
Installing github.com/ramya-rao-a/go-outline FAILED
Installing github.com/acroca/go-symbols FAILED
Installing golang.org/x/tools/cmd/guru FAILED
Installing golang.org/x/tools/cmd/gorename FAILED
Installing github.com/cweill/gotests/... FAILED
Installing github.com/fatih/gomodifytags FAILED
Installing github.com/josharian/impl FAILED
Installing github.com/davidrjenni/reftools/cmd/fillstruct FAILED
Installing github.com/haya14busa/goplay/cmd/goplay FAILED
Installing github.com/godoctor/godoctor FAILED
Installing github.com/go-delve/delve/cmd/dlv FAILED
Installing github.com/stamblerre/gocode FAILED
Installing github.com/rogpeppe/godef FAILED
Installing golang.org/x/tools/cmd/goimports FAILED
Installing golang.org/x/lint/golint FAILED
​
17 tools failed to install.
​
gocode:
Error: Command failed: /usr/local/go/bin/go get -v github.com/mdempsky/gocode
go get github.com/mdempsky/gocode: module github.com/mdempsky/gocode: Get "https://proxy.golang.org/github.com/mdempsky/gocode/@v/list": dial tcp 172.217.160.113:443: i/o timeout
go get github.com/mdempsky/gocode: module github.com/mdempsky/gocode: Get "https://proxy.golang.org/github.com/mdempsky/gocode/@v/list": dial tcp 172.217.160.113:443: i/o timeout

可能原因

Reason: China Firewalled killed all of google's web sites.

解决方案

设置代理:

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.io,direct

类似问题

在用homebrew安装bazelisk的时候也遇到类似问题(如何解决类似 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 的问题),主要是因为 github 的一些域名的 DNS 解析被污染

DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址

导致DNS 解析过程无法通过域名取得正确的IP地址。可以通过修改/etc/hosts文件可解决该问题。

解决方案:

  • 打开 www.ipaddress.com/ 输入访问不了的域名

  • 查询之后可以获得正确的 IP 地址

  • 在本机的 host 文件中添加,建议使用 switchhosts 方便 host 管理

  • 以上的例子中,添加以下host:

    199.232.68.133 raw.githubusercontent.com 199.232.68.133 user-images.githubusercontent.com 199.232.68.133 avatars2.githubusercontent.com 199.232.68.133 avatars1.githubusercontent.com

初次配置Go环境虽然可能会面临一些挑战,但通过深入的分析、有序的步骤和积极的解决态度,我克服了这些困难,使得开发环境能够顺利搭建起来。在解决问题的过程中,我也学到了很多关于网络连接、代理设置和环境配置的有用知识,这将在今后的开发工作中大有裨益。此外,了解DNS污染问题以及如何通过手动配置hosts文件来解决问题,也为我提供了在网络环境不稳定时保持高效开发的方法。在充满挑战的技术世界中,不断学习和实践正是我们不断进步的动力,而这次配置Go环境的经历无疑是这个过程中的一次宝贵的学习机会,是我跨入go语言学习的第一步。

参考资料

1.解决VSCode安装Go tools失败的问题

2.Failed to install go tools in China

3.GOPROXY

4.如何解决类似 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 的问题