03|配好环境:选择一种最适合你的Go安装方法
该思维导图由 AI 生成,仅供参考
选择 Go 版本
- 深入了解
- 翻译
- 解释
- 总结
Go语言版本选择和安装方法总结 Go语言是一门实践的艺术,学习任何一门编程语言的第一步都是要拥有一个这门编程语言的开发环境。本文介绍了如何选择适合自己的Go版本以及在Linux、macOS和Windows操作系统上安装Go的方法。Go团队将版本发布节奏稳定在每年发布两次大版本上,建议选择最新版本以体验最新语言特性和工具链功能。 在Linux上安装Go需下载并解压安装包,然后设置环境变量;在Mac上可通过图形界面或命令行安装;在Windows上推荐使用图形界面安装。此外,文章还介绍了安装多个Go版本的方法,以满足不同需求。通过本文,读者可以快速了解Go语言的安装和配置方法,为学习和实践Go语言奠定基础。 文章还介绍了三种Go版本的选择策略,推荐使用最新版本以体验最新语言特性和功能,但也提供了次新版和稳定版的选择建议。此外,还介绍了通过重新设置PATH环境变量和使用go get命令安装多个Go版本的方法,以及通过go get命令安装非稳定版本的步骤。 最后,文章讲解了Go的一些常用配置项的功用,对于中国地区的Go开发者而言,配置GOPROXY这个Go环境变量是必要的。总的来说,本文为读者提供了全面的Go版本选择、安装和配置方法,为他们快速搭建Go开发环境提供了指导。 通过本文的总结,读者可以快速了解Go语言版本选择和安装的方法,以及配置Go开发环境的常用配置项,为他们的Go学习和实践提供了基础支持。
《Tony Bai · Go 语言第一课》,新⼈⾸单¥59
全部留言(43)
- 最新
- 精选
- 陈彬Tony老师 $go get golang.org/dl/go1.15.13 这个是不是已经不能用了,改成了: $go install golang.org/dl/go1.15.13@latest
作者回复: 是的。如果用的是go 1.17版本,那么从go 1.17开始, go get不再承载go install功能了。写这篇稿子的时候,go 1.17还没有发布。用的是go 1.16。
2021-10-18322 - Geek_eb6c14Mac环境下更改GOPROXY环境变量的终端命令行: export GOPROXY="https://goproxy.cn,direct"
作者回复: 手动点赞!
2021-10-18411 - 郑童文请问老师go env 里面的配置项究竟是存储在哪儿的? 网上有说是生成go 命令(go语言的的编译工具)时,直接包含在其中了,也有说是在一个和用户相关的配置文件夹里面,还有的说是来自系统环境变量,那这三种来源的优先级是怎么样的? 谢谢!
作者回复: 好问题。go env的确会综合多个数据源。优先级最高的是用户级环境变量。以linux为例,你的用户下的.profile文件中的环境变量优先级最高。然后是系统级环境变量(但我们很少在linux下用系统级环境变量),最后是go自带的默认值。
2021-10-218 - lesserror感觉Tony Bai老师的细致分享。 比较困惑我的地方是:安装多个 Go 版本的方法二和方法三。 文中说:“这个命令会将名为 go1.15.13 的可执行文件安装到 $HOME/go/bin 这个目录下”。我在Mac下,期初是没有这个文件夹的,文中说没有也没关系,我以为会自动创建。但是最终没有创建这个文件夹,也没看到可执行的安装文件。最后依然可以安装成功对应的Go版本。 关于这块,能讲讲原理就好了,看了文章,我似乎还并不明白。 文中说:“不是每次 gotip 安装都会成功,因为这毕竟是正在积极开发的版本,一次代码的提交就可能会导致 gotip 版本构建失败!” 我这里访问外网没问题,依然尝试了很多次,都是失败(fatal: unable to access 'https://go.googlesource.com/go/': Failed to connect to go.googlesource.com port 443: Operation timed out gotip: failed to clone git repository: exit status 128)。 “一次代码的提交就可能会导致 gotip 版本构建失败!” 能说说这里表达的意思吗?不是很懂。 另外,关于Go的配置的各种环境变量设置,希望后文能够结合各种go命令而产生的结果,是由哪些环境Go配置环境变量影响的,Go项目的构建,这些配置都是怎么搭配使用的,能够结合实例讲讲。我看了很多入门课程,都只是在教程开头列了这一个配置表格,后文再无提及。这样还是不能上手Go项目的开发。
作者回复: 首先感谢你如此认真的看文章、动手实践以及提出问题。 问题1:当你的主机上没有$HOME/go/bin目录时,当执行go get/install 1.15.13版本时,go命令会自动创建$HOME/go/bin目录,并将下载的go1.15.13文件放置在该目录下。 问题2:“fatal: unable to access 'https://go.googlesource.com/go/': Failed to connect to go.googlesource.com port 443: Operation timed out gotip: failed to clone git repository: exit status 128” -- 这个问题还是与网络或git clone慢导致超时油管。 至于““一次代码的提交就可能会导致 gotip 版本构建失败!”,这个很容易理解啊。当我们通过go get方式安装go-tip版本时,go get其实也是下载go tip最新源码,然后编译这份源码。如果某个go核心开发者提交一个代码恰好导致go tip源码编译不过去,而你 下载的恰恰是这个时刻的go tip源码,那你的go tip安装自然就会因build失败而失败。 最后,你的建议很好。我会注意考虑的。
2021-10-1836 - mikewoo## 1 Ubuntu安装GO 1.8 ming@itdest:~$ wget -c https://golang.google.cn/dl/go1.18.linux-amd64.tar.gz ming@itdest:~$ sudo tar -xzvf go1.18.linux-amd64.tar.gz -C /usr/local/ ming@itdest:~$ ls /usr/local/go api bin CONTRIBUTING.md doc LICENSE PATENTS README.md src VERSION AUTHORS codereview.cfg CONTRIBUTORS lib misc pkg SECURITY.md test ## 2 配置环境变量 ming@itdest:~$ sudo vim /etc/profile ``` shell export GOROOT=/usr/local/go export GO111MODULE="on" export GOBIN=$GOROOT/bin export GOPATH=/home/ming/code/go export GOPROXY="https://goproxy.cn,direct" export PATH=$GOROOT/bin:$PATH ``` ming@itdest:~$ . /etc/profile ## 3 验证安装是否成功 ### 3.1 查看go版本信息 ming@itdest:~$ go version go version go1.18 linux/amd64 ### 3.2 查看go env配置 ming@itdest:~$ go env GO111MODULE="on" GOARCH="amd64" GOBIN="/usr/local/go/bin" GOCACHE="/home/ming/.cache/go-build" GOENV="/home/ming/.config/go/env" GOEXE="" GOEXPERIMENT="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOINSECURE="" GOMODCACHE="/home/ming/code/go/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/home/ming/code/go" GOPRIVATE="" GOPROXY="https://goproxy.cn,direct" GOROOT="/usr/local/go" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" GOVCS="" GOVERSION="go1.18" GCCGO="gccgo" GOAMD64="v1" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="/dev/null" GOWORK="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build2801595155=/tmp/go-build -gno-record-gcc-switches"
作者回复: 👍
2022-04-0724 - Geek_JcoLEMac使用brew下载后直接使用go version验证成功了,但是在网上查阅了很多资料,需要配置环境变量GOPATH和GOROOT,想问老师这种情况下还需要配置环境变量嘛?
作者回复: 新版go都不需要配置goroot和gopath了。
2022-10-04归属地:北京23 - 唐家岭大盗老师您好,如果一台机器安装了多个go版本,这些版本共用一套环境变量吗,还是说每个版本有自己的环境变量啊
作者回复: 如果是通过系统shell设置的环境变量,那应该是共享的。 如果是通过go env -w设置的,那么要看不同版本go存储env配置的路径是否是一样,如果一样,那也是共享的。查看配置路径的方法:go env GOENV。
2022-09-29归属地:北京3 - SummerRecordWindows可以用winget一键安装 winget install GoLang.Go
作者回复: 👍。这个还真没试过。
2022-05-023 - rs勿忘初心FYI: GOPROXY: 用来配置Go Module proxy服务,其默认值为"https://proxy.golang.org,direct"。中国大陆地区,一般设置为大陆地区提供的module proxy服务以加速Go Module的获取速度,值可以设置为"https://goproxy.cn,direct" Mac更改GOPROXY环境变量的终端命令行为:export GOPROXY="https://goproxy.cn,direct"
作者回复: 👍
2021-12-203 - Rock安装多个版本的方法一通过重新设置 PATH 环境变量的方法有些麻烦,同时只能存在一个版本。借鉴于老师提供的方法二的思路,通过以下别名alias的方式配置即可实现不许更改环境变量就可多版本共存,不知是否有问题,请老师查看: 版本1:go1.16.5按照正常配置go到环境变量 版本2: go1.15.13下载到指定目录,alias go1.5=/usr/local/go1.15.13/go/bin/go 这样命令行输入:go 为默认1.16.5版本 命令行输入:go1.5 为go1.15.13版本
作者回复: 这么设置没有问题。但如果你有两个go 1.15版本要用,一个是go1.15.12和go 1.15.13,那么你是不是还是要做两个alias,莫不如直接用go1.15.13和go1.15.12这样的名称。
2021-11-063