- 下载Go二进制文件: 在Go官方网站下载适合操作系统(macOS)的Go二进制文件。
- 安装Go: 打开下载的Go二进制文件并按照安装向导完成Go的安装。一般情况下,安装过程会将Go安装到
/usr/local/go目录下,并将Go的二进制文件(例如go、gofmt等)安装到/usr/local/go/bin目录下。 - 设置环境变量: 为了在终端中使用Go命令,需要将Go的二进制文件路径添加到系统的环境变量
PATH中。 - 生效环境变量: 在终端中输入以下命令,使新的环境变量生效:
bashCopy code
source ~/.bash_profile
- 验证安装: 在终端中输入以下命令,验证Go是否成功安装:
goCopy code
go version
如果输出Go的版本信息,说明安装成功。
- 创建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语言学习的第一步。
参考资料
2.Failed to install go tools in China
4.如何解决类似 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 的问题