Go 语言安装部署(超详细版本)

在学习和使用 Go 语言时,正确的安装和配置是非常重要的一步。本文将介绍如何在不同操作系统上安装 Go 语言,并讨论一些常见的配置选项,帮助读者更好地了解和使用 Go 语言。无论是初学者还是有一定经验的开发者,都能从本文中获得有用的信息和指导,使他们能够顺利地开始使用 Go 语言进行开发。


文章目录

      • 1、选择 Go 版本
      • 2、Go 语言的安装
        • 2.1、下载
        • 2.2、安装
          • 2.2.1、Linux 下的 Go 语言安装
          • 2.2.2、Mac 下的 Go 语言安装
          • 2.2.3、Windows下的 Go 语言安装
      • 3、安装多个 Go 版本
        • 3.1、方法一:重新设置 PATH 环境变量
        • 3.2、方法二:go get 命令
        • 3.3、方法三:go get 命令安装非稳定版本
        • 4、Go 的基础配置


1、选择 Go 版本

挑版本之前,我们先来看看 Go 语言的版本发布策略

Go 团队目前已经将版本发布节奏稳定在每年两次,通常在二月和八月发布大版本。Go 团队承诺支持最新的两个稳定版本。例如,如果当前最新版本是 Go 1.17,那么 Go 团队将支持 Go 1.17 和 Go 1.16;当 Go 1.18 发布时,支持的版本将变为 Go 1.18 和 Go 1.17。

支持内容主要包括修复重大问题、文档更新以及安全问题更新等。因此,在选择 Go 语言版本时,可以参考以下几种思路:

  1. 使用最新版本:一般情况下,建议使用最新版本。Go 语言的稳定版本质量普遍较高,较少出现影响使用的重大 bug。同时,Google 的产品如 Google App Engine(GAE)也会很快支持最新版本,通常在新版本发布不久后便会宣布支持;
  2. 根据实际项目需求选择:根据项目的具体需求或开源社区的情况,选择适合的版本也是一种策略。不同版本可能会有不同的功能和特性,选择合适的版本可以更好地满足项目需求。

通过这种版本选择策略,可以确保你使用的 Go 版本稳定且得到及时支持。

一般情况下,我建议你采用最新版本。Go 团队发布的稳定版本质量一直很高,极少出现影响使用的重大 bug。你也不用担心新版本的支持问题,Google 的自有产品如 Google App Engine(GAE)通常会在新版本发布后很快宣布支持最新版本的 Go。

当然,你也可以根据实际项目需求或开源社区的情况选择不同的版本。有些开源项目会迅速采用最新版本。例如,Kubernetes 项目通常在 Go 新版本发布后不久就升级其编译器版本。而另一些项目,如 Docker,较为谨慎,可能在 Go 1.17 发布后仍使用两个发布周期之前的版本(如 Go 1.15)。

多数项目采用折中的策略,即使用次新版(最新版本之前的那个版本)。例如,当当前最新版本为 Go 1.17 时,这些项目会使用 Go 1.16 的最新补丁版本(Go 1.16.x),直到 Go 1.18 发布后才切换到 Go 1.17 的最新补丁版本(Go 1.17.x)。如果你不想采用最新版本,也可以考虑这种次新版策略。

选定 Go 版本后,接下来我们就来看看几种常见的 Go 安装方法


2、Go 语言的安装

2.1、下载

Go 语言官方下载地址:https://golang.google.cn/dl/

image-20240527101944746

2.2、安装
2.2.1、Linux 下的 Go 语言安装
  1. 执行以下命令, 先删除之前安装的 go 版本, 一般在 /usr/local/go 目录; 然后把之前下载的压缩包解压到 /usr/local/ 目录:
$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz

注意:

  • 一定要删掉原目录, 否则解压后混杂在一起会出问题.
  • 如果提示权限不够, 需要以root权限(sudo)执行命令.
  1. 将 go 安装路径加入环境变量, 这样能找到它. 可以在你的 /home 目录下的 .profile 或者 .bashrc 文件里加入一句:
export PATH=$PATH:/usr/local/go/bin

然后在 shell 中执行命令来使其生效:

$ source $HOME/.profile
或者
$ source $HOME/.bashrc
  1. 在 shell 中验证 go 成功安装了:
$ go version

输出类似:

go version go1....
2.2.2、Mac 下的 Go 语言安装
  1. 执行以下命令, 先删除之前安装的go版本, 一般在/usr/local/go目录.
$ rm -rf /usr/local/go
  1. 双击下载的包进行安装.安装器会把 Go 安装到/usr/local/go目录, 并且自动把/usr/local/go/bin目录写入$PATH环境变量.
  2. 重启或打开新的终端, 用以下命令验证:
$ go version
2.2.3、Windows下的 Go 语言安装
  1. 确认原来的 go 目录删干净了, 一般在 Program Files 或 Program Files (x86) 目录下, 有则删掉;
  2. 双击下载的安装 msi 文件, 自动安装好了.
  3. 打开 cmd, 用以下命令验证:
$ go version

3、安装多个 Go 版本

一般来说,Go 初学者安装最新版本就足够了。但随着 Go 编程的深入,可能会需要使用多个 Go 版本。例如,一个版本用于学习或本地开发,另一个版本用于生产构建。

安装多个 Go 版本其实很简单,这里介绍三种方法:

3.1、方法一:重新设置 PATH 环境变量

你只需要将不同版本的 Go 安装在不同路径下,然后将它们的 Go 二进制文件的所在路径加入到 PATH 环境变量中就可以了。

我们以 Linux 环境为例,在前面介绍 Go 标准安装方法的时候,我们已经将 Go 1.16.5 版本安装到了 /usr/local/go 下面,也将 /usr/local/go/bin 这个路径加入到了 PATH 路径下了,当前状态我们在任意路径下敲入 go,执行的都是 Go 1.16.5 版本对应的 Go 二进制文件。

那这个时候,如果我们想再安装一个 Go 1.15.13 版本要怎么办呢?首先,你需要按照标准步骤将 Go 1.15.13 安装到事先建好的 /usr/local/go1.15.13 路径下:

$mkdir /usr/local/go1.15.13
$wget -c https://golang.google.cn/dl/go1.15.13.linux-amd64.tar.gz
$tar -C /usr/local/go1.15.13 -xzf go1.15.13.linux-amd64.tar.gz

接下来,我们来设置 PATH 环境变量,将原先 $HOME/.profile 中的 PATH 变量的值由:

export PATH=$PATH:/usr/local/go/bin

改为:

export PATH=$PATH:/usr/local/go1.15.13/go/bin

这样通过执行 source 命令重新使 PATH 环境变量生效后,我们再执行 ·go version· 命令,会得到下面这样的结果:

$go version
go version go1.15.13 linux/amd64

这样,我们已经安装好两个 Go 版本了。这之后,我们如果要在 Go 1.16.5 和 Go 1.15.13 两个版本之间切换,只需要重新设置 PATH 环境变量并生效即可。

不过,你可能依然会觉得通过重新设置 PATH 环境变量的方法有些麻烦。没关系,Go 官方也提供了一种在系统中安装多个 Go 版本的方法,下面我们就来看一下第二种方法。

3.2、方法二:go get 命令

使用这种方法安装不同的 Go 版本有一个前提条件,那就是当前系统中已经通过标准方法安装过某个版本的 Go。接下来,我们以 Linux 环境为例,假设目前系统中已经安装了 Go 1.16.5 版本,我们还想再安装一个 Go 1.15.13 版本。按照 Go 官方方法,我们可以这样来做:

首先,将 $HOME/go/bin 加入到 PATH 环境变量中并生效,即便这个目录当前不存在也没关系。:

export PATH=$PATH:/usr/local/go/bin:~/go/bin

然后,我们要执行下面这个命令安装 Go 1.15.13 版本的下载器:

$go get golang.org/dl/go1.15.13

这个命令会将名为 Go 1.15.13 的可执行文件安装到 $HOME/go/bin 目录下,它是 Go 1.15.13 版本的专用下载器。接下来,我们执行 Go 1.15.13 的下载安装命令:

$go1.15.13 download

Downloaded   0.0% (    16384 / 121120420 bytes) ...
Downloaded   1.8% (  2129904 / 121120420 bytes) ...
Downloaded  84.9% (102792432 / 121120420 bytes) ...
Downloaded 100.0% (121120420 / 121120420 bytes)
Unpacking /root/sdk/go1.15.13/go1.15.13.linux-amd64.tar.gz ...
Success. You may now run 'go1.15.13'

现在,我们看到这个命令下载了 go1.15.13.linux-amd64.tar.gz 安装包,并将其安装到 $HOME/sdk/go1.15.13 目录下。下载安装结束后,我们就可以利用带有版本号的 go 命令来使用特定版本的 Go。

$go1.15.13 version
go version go1.15.13 linux/amd64

同样的,我们也可以通过下面这个命令查看特定 Go 版本的安装位置:

$go1.15.13 env GOROOT
/root/sdk/go1.15.13
3.3、方法三:go get 命令安装非稳定版本

除了 Go 团队正式发布的稳定版本(如 Go 1.16.5 或 Go 1.15.13),我们还可以通过 go get 安装 Go 团队正在开发的非稳定版本(Unstable Version),包括每个稳定版发布前的 beta 版本或当前最新的 tip 版本。这些非稳定版本可以让开发人员提前体验即将加入稳定版本的新特性。

不过,在中国大陆地区,通过 go get 安装不同的 Go 版本可能会因为网络问题而失败。如果你已经解决了网络问题,那么安装非稳定版本的步骤其实与安装稳定版本类似。现在,我们以 Go 1.17beta1 和 Go Tip 版本为例,演示它们的安装步骤和验证方法:

首先我们来看 Go 1.17beta1:

$go get golang.org/dl/go1.17beta1
$go1.17beta1 download
Downloaded   0.0% (     3272 / 134470397 bytes) ...
Downloaded  21.4% ( 28819248 / 134470397 bytes) ...
Downloaded  58.1% ( 78069168 / 134470397 bytes) ...
Downloaded 100.0% (134470397 / 134470397 bytes)
Unpacking /root/sdk/go1.17beta1/go1.17beta1.linux-amd64.tar.gz ...
Success. You may now run 'go1.17beta1'
$go1.17beta1 version
go version go1.17beta1 linux/amd64

接着来看 Go Tip 版本:

$go get golang.org/dl/gotip
$gotip download

当然,go get 为我们安装 tip 版本提供了极大便利。要知道,以前如果我们想安装 tip 版本,需要手动下载 Go 源码并自行编译。然而,需要注意的是,不是每次 gotip 安装都会成功,因为这个版本正在积极开发中,一次代码提交可能会导致 gotip 版本构建失败。


4、Go 的基础配置

实际上,Go 在安装后即开箱即用,这意味着我们在使用 Go 之前无需做任何配置。然而,为了更好地了解和学习 Go,我们还是需要认识一些 Go 自带的常用配置项。这些配置项是以环境变量的形式存在的。我们可以通过以下命令查看 Go 的这些配置项:

$go env

运行这个命令后,你将看到一系列的环境变量,这些变量控制着 Go 的各项设置。下面是一些常用的 Go 环境变量:

image-20240527104210983

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/648857.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RAC11G添加节点

添加节点场景 1、集群扩容 2、节点损坏后进行了删除操作,之后又要求恢复删除节点 环境和需求说明 由于3节点RAC,其中节点3因为本地盘损坏,导致系统完全损坏,系统需要重新安装。将损坏的3节点删除后再进行添加。 数据库版本&a…

力扣刷题--268. 丢失的数字【简单】

题目描述🍗 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1: 输入:nums [3,0,1] 输出:2 解释:n 3,因为有 3 个数字,所以…

Compose Multiplatform 1.6.10 发布,解释一些小问题, Jake 大佬的 Hack

虽然一直比较关注跨平台开发,但其实我很少写 Compose Multiplatform 的内容,因为关于 Compose Multiplatform 的使用,其实我并没在实际生产环境上发布过,但是这个版本确实值得一提,因为该版本包含: iOS Bet…

蓝牙模块、WiFi模块等无线通信模块使用规范

在当今的科技时代,无线通信模块已经广泛应用于各类电子设备中。特别是蓝牙模块、WiFi模块等无线模块,它们为设备间的通信提供了便利,使得我们的生活更加便捷和高效。然而,为了确保这些无线模块正常工作并避免可能的安全隐患&#…

IDEA创建Spring Boot项目

1 打开新建项目界面 如图1,打开IDEA,点击菜单栏的File->New->Project,打开新建项目界面。 图1 新建项目 2 填写项目信息 在新建项目界面点击左侧工具栏的Spring Initializr选项,进行Spring Boot项目信息的填写&#xff…

kettle之 Concat fields将字符串拼接起来

用到两个组件,一个是文本文件输入,一个是 Concat fields 成功截图 文本文件输入 根据;将文本内容分成两部分,第一部分是a,第二部分是b Concat fields 运行即可 这里的Fields是上一个步骤里面的输出的字段名称 TargetField Nam…

# window10 设置一个【自定义运行】命令行快捷方式

window10 设置一个【自定义运行】命令行快捷方式 window10 [运行】命令行打不开,可采用如下简单快捷方法: 1、右键点击桌面空白处,然后点击【新建】,再点击【快捷方式】。 2、在【请键入对象的位置】文本框输入: exp…

【JavaEE进阶】——一万字带你深刻理解Spring IoCDI

目录 🚩Spring是什么 🎈什么是容器? 🎈什么是 IoC? 📝传统开发思路 📝IOC思想 📝IoC 优势 🎈DI 介绍 🚩IoC 详解 🎈Bean的存储 &#x…

Zoho Campaigns邮件营销怎么发邮件?

Zoho Campaigns,作为业界领先的邮件营销平台,以其强大的功能、用户友好的界面以及深度的分析能力,为企业提供了一站式的邮件营销解决方案,助力企业高效地触达目标受众,构建并巩固庞大的客户基础。云衔科技为企业提供Zo…

羊毛纤维直径检测 — C++

羊毛纤维检测 系统是 Ubuntu20.04 。 需要用到 OpenCV 的库,库具体该怎么编译配置,可以参考网上的教程。 自己码的一小段函数,用纯 CV 的方式处理羊毛纤维图像,如图所示: 在 wool 下面,创建 build 文件…

Redis 实战 - 缓存异常及解决方案

文章目录 概述一、缓存穿透1.1 缓存穿透是什么1.2 解决方案 二、缓存击穿2.1 缓存击穿是什么2.2 解决方案 三、缓存雪崩3.1 缓存雪崩是什么3.2 解决方案 四、拓展4.1 缓存预热4.2 缓存降级 五、结语 把今天最好的表现当作明天最新的起点…….~ 概述 在实…

常见web安全漏洞

一、信息泄露 概念 信息泄露是由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信 息,如用户名、密码、源代码、服务器信息、配置信息等。 造成信息泄露主要的三个原因: ①Web服务器配置存在问题,导致一些系统…

mac 安装java jjdk8 jdk11 jdk17 等

oracle官网 https://www.oracle.com/java/technologies/downloads/ 查看当前电脑是英特尔的x86 还是arm uname -m 选择指定版本,指定平台的安装包: JDK8 JDK11的,需要当前页面往下拉: 下载到的安装包,双击安装&#x…

扭蛋机小程序开发,数字化发展对行业带来的优势

随着科技的不断进步和大众对娱乐消费需求的提高,线上扭蛋机得到了快速发展,市场规模不断扩大。线上扭蛋机是基于淘宝的小程序,它以电商的模式让消费者进行虚拟扭蛋,获得各类商品,扭蛋机小程序中的商品包括玩具、IP周边…

【百度智能体】零代码创建你的 AI 宠物助手

前言 今天给大家介绍一下百度的 AI 产品 – 百度智能体,在文心智能体平台你可以0代码就可以创建出属于自己的 AI 机器人,几乎可以选择任何你想要的领域或者行业机器人,进行无代码打造自己的对话助手,本文将介绍文心智能体&#x…

3D技术的应用领域

3D技术在现代科技和工业中有广泛的应用,其涵盖的领域非常广泛,从娱乐到医学,再到制造业和建筑,3D技术正在改变我们理解和互动的方式。以下是一些主要的应用领域。北京木奇移动技术有限公司,专业的软件外包开发公司&…

单点登录与JWT

JWT:JSON Web Token JWT的作用是用户授权(Authorization),而不是用户的身份认证(Authentication) 授权(Authorization)vs认证(Authentication) 用户认证指的是使用用户名、密码来…

RedHat9 | 配置与管理DNS服务器

一、 知识预备 1、DNS服务器的分类 主DNS服务器 主DNS服务器复制维护所管辖域的域名服务信息,它从域管理员构造的本地磁盘文件中的加载域信息。该文件包含服务器具有管理权的的一部分域结构的精确信息,配置主域服务器需要一整套配置文件: …

瑜伽馆约课会员管理系统小程序的作用是什么

瑜伽馆有着众多学员,如瘦身、改变气质、减脂塑形等往往属于长期多次跟随教练学习,或是自己在家里学习等,对商家来说,品牌宣传、吸引客户到店以及长期经营、提高自身服务效率是重中之重。 客户多次进店享受服务的同时还需要悦己&a…

关于单元测试

关于单元测试的一些总结: