Tony Bai · Go 语言第一课
Tony Bai
资深架构师,tonybai.com 博主
21492 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 59 讲
开篇词 (1讲)
结束语 (1讲)
Tony Bai · Go 语言第一课
15
15
1.0x
00:00/00:00
登录|注册

03|配好环境:选择一种最适合你的Go安装方法

安装并验证
下载安装包
验证安装是否成功
设置环境变量PATH
下载安装包
验证安装是否成功
设置环境变量PATH
下载并解压Go安装包
使用go help命令查看Go命令的使用方法
使用go env命令查看配置项
Go的常用配置项
安装非稳定版本
使用go get命令
重新设置PATH环境变量
在Windows上安装Go
在Mac上安装Go
在Linux上安装Go
根据项目需求选择版本
建议选择最新版本
Go语言的版本发布策略
思考题
配置Go
安装多个Go版本
安装Go
选择Go版本
Go语言开发环境安装与配置

该思维导图由 AI 生成,仅供参考

你好,我是 Tony Bai。
经过上一节的对 Go 设计哲学的探讨后,如果你依然决定继续 Go 语言编程学习之旅,那么欢迎你和我一起正式走进 Go 语言学习和实践的课堂。
编程不是“纸上谈兵”,它是一门实践的艺术。编程语言的学习离不开动手实践,因此学习任何一门编程语言的第一步都是要拥有一个这门编程语言的开发环境,这样我们才可以动手编码,理论与实践结合,不仅加速学习效率,还能取得更好的学习效果。
在这一讲中我们就先来学习下如何安装和配置 Go 语言开发环境。如果你的机器上还没有 Go,那么就请跟我一起选择一种适合你的 Go 安装方法吧。第一步,先来挑一个合适的 Go 版本。

选择 Go 版本

挑版本之前,我们先来看看 Go 语言的版本发布策略
如今,Go 团队已经将版本发布节奏稳定在每年发布两次大版本上,一般是在二月份和八月份发布。Go 团队承诺对最新的两个 Go 稳定大版本提供支持,比如目前最新的大版本是 Go 1.17,那么 Go 团队就会为 Go 1.17 和 Go 1.16 版本提供支持。如果 Go 1.18 版本发布,那支持的版本将变成 Go 1.18 和 Go 1.17。支持的范围主要包括修复版本中存在的重大问题、文档变更以及安全问题更新等。
基于这样的版本发布策略,在你选择版本时可以参考这几种思路:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

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-18
    3
    22
  • Geek_eb6c14
    Mac环境下更改GOPROXY环境变量的终端命令行: export GOPROXY="https://goproxy.cn,direct"

    作者回复: 手动点赞!

    2021-10-18
    4
    11
  • 郑童文
    请问老师go env 里面的配置项究竟是存储在哪儿的? 网上有说是生成go 命令(go语言的的编译工具)时,直接包含在其中了,也有说是在一个和用户相关的配置文件夹里面,还有的说是来自系统环境变量,那这三种来源的优先级是怎么样的? 谢谢!

    作者回复: 好问题。go env的确会综合多个数据源。优先级最高的是用户级环境变量。以linux为例,你的用户下的.profile文件中的环境变量优先级最高。然后是系统级环境变量(但我们很少在linux下用系统级环境变量),最后是go自带的默认值。

    2021-10-21
    8
  • 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-18
    3
    6
  • 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-07
    2
    4
  • Geek_JcoLE
    Mac使用brew下载后直接使用go version验证成功了,但是在网上查阅了很多资料,需要配置环境变量GOPATH和GOROOT,想问老师这种情况下还需要配置环境变量嘛?

    作者回复: 新版go都不需要配置goroot和gopath了。

    2022-10-04归属地:北京
    2
    3
  • 唐家岭大盗
    老师您好,如果一台机器安装了多个go版本,这些版本共用一套环境变量吗,还是说每个版本有自己的环境变量啊

    作者回复: 如果是通过系统shell设置的环境变量,那应该是共享的。 如果是通过go env -w设置的,那么要看不同版本go存储env配置的路径是否是一样,如果一样,那也是共享的。查看配置路径的方法:go env GOENV。

    2022-09-29归属地:北京
    3
  • SummerRecord
    Windows可以用winget一键安装 winget install GoLang.Go

    作者回复: 👍。这个还真没试过。

    2022-05-02
    3
  • 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-20
    3
  • 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-06
    3
收起评论
显示
设置
留言
43
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部