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

news2024/9/25 17:14:58

在学习和使用 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

buuctf-相册

题目提示找到邮箱 下载是一个apk文件 他都不建议安装到手机了 我还是不找麻烦动调了吧 他说是mail,那行吧 找mail 找到就是这一段 base64 s3 notebook 这里可以看见加载了native库 所以要IDA 打开so文件 apk就是一个压缩包,直接解压就行 lib里面就有so文件 再根据熟知的…

深度剖析整型和浮点型数据在内存中的存储(C语言)

目录 整型在内存中的存储 为什么整型在内存中存储的是补码? 大小端字节序 为什么有大端小端? 浮点型家族 浮点数在内存中的存储 long long 整型在内存中的存储 整型在内存中有三种二进制表示形式:原码,反码,补码…

网站笔记:huggingface model memory calculator

Model Memory Utility - a Hugging Face Space by hf-accelerate 这个工具可以计算在 Hugging Face Hub上托管的大型模型训练和执行推理时所需的vRAM内存量。模型所需的最低推荐vRAM内存量表示为“最大层”的大小,模型的训练大约是其大小的4倍(针对Adam…

Python-3.12.0文档解读-内置函数id()详细说明+记忆策略+常用场景+巧妙用法+综合技巧

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 详细说明 概述 参数 返回值 特性 实现细节(CPython) 安全…

M-G370PDG惯性测量单元,可实时监测天线的姿态和位置变化

动中通天线系统通常包括天线、卫星信号跟踪器、调制解调器、电源管理单元和用户终端设备等部分。其中,天线是系统的关键部件,负责接收和发送卫星信号。随着移动载体的运动,天线需要实时调整方向,以保持与卫星的稳定连接。卫星信号…

uniapp页面vue3下拉触底发送获取新数据请求实现分页功能

页面下拉触底获取新数据实现分页功能实现方式有两种,根据自己的业务需求来定,不同的方案适用场景不一样,有的是一整个页面下拉获取新数据,有的是部分盒子内容滚动到底部时候实现获取新数据,下面讨论一下两种方式的区别…

【Python数据分析】基于自回归积分滑动平均模型的疫情分析报告 附完整python代码

资源地址:Python数据分析大作业 2000字 图文分析文档 疫情分析完整python代码 数据分析 数据来自法国疫情数据 资源地址:Python数据分析大作业 2000字 图文分析文档 疫情分析完整python代码 代码详解 完整代码文件 主要是对时间序列数据进行分析和预…

python技巧梳理

背景 在开发中,经常会遇到,同时存在多个值,依次判断上述值,选择第一个非空、True的值作为整个表达式的值进行返回,这个时候会用到or这个关键词,下面讲一下用法。 方法 value1 None value2 0 value3 H…

韩顺平0基础学Java——第11天

p234-249 又一个月了,时间过得好快啊,希望支棱起来 可变参数 public int sum(int ... nums){ } 这个nums是数组 细节: 1可变参数可以为0个,或任意个 2可变参数的实参可以为数组 3可变参数的本质就是数组 4可变参数可以和普通…

群晖NAS安装web服务器和搭建PHP环境

文章目录 安装Web Station 和 PHP配置PHP配置新站点(虚拟主机):配置nginx 安装MariaDB修改数据库配置配置远程连接远程连接 最近折腾了一台群晖NAS,并搭建了一套web服务器,关于其中的一些设置,和传统的Linu…

Linux应急响应思路和技巧:进程分析篇

前言 本文总结自网宿安全演武实验室安全应急响应团队日常工作实践,主要介绍在Linux服务器环境出现明确或疑似的被入侵表现之后,安全人员如何在服务器系统中确认入侵结果,执行入侵后的溯源取证、入口定位、行为还原、后门定位等工作&#xff…

大数据框架总结(全)

☔️ 大数据框架总结(全) 关注“大数据领航员”,在公众号号中回复关键字【大数据面试资料】,即可可获取2024最新大数据面试资料的pdf文件 一. Hadoop HDFS读流程和写流程 HDFS写数据流程 (1)客户端通过…

TypeScript 语言在不改变算法复杂度前提下,细节上性能优化,运行时性能提升效果明显吗?

有经验的专家写的代码,和无经验的新手写的代码,在运行时性能上大概会有多少差异? 个人感觉,常规业务逻辑代码通常可以差 1 倍;如果算上框架的影响,可以差 2~4 倍。 仅考虑业务代码的话,新手容易…

Python3 使用 pymssql 连接 SQL Server 报错:DB-Lib error message 20002, severity 9

一、版本说明 python版本: 3.12.1 pymssql版本: 2.3.0 # pymssql.version_info() SQL Server版本:SQL Server 2008 OS版本: rocky linux 9.4二、报错信息 Traceback (most recent call last):File "src/pymssql/_…

四大运营商大流量卡测评,手机卡,物联网卡,纯流量卡

买大流量卡,看4个方面 优惠时间。有的只是12个月,24个月有优惠【可以先用一年,然后注销】通用流量。而不是定向流量全国通话分钟数。而不是亲情通话分钟数销户方式。是否支持随时销户,异地销户,线上销户,额…

【云原生】kubernetes中的认证、权限设置---RBAC授权原理分析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【云擎未来,智信天下】移动云服务器Docker部署+远程连接Redis

文章目录 引言: 移动云:云擎未来,智信天下一、什么是Redis?二、Redis 与其他 key-value 存储有什么不同?Redis 架构 三、环境准备四、部署流程使用Redis Desktop Manager远程连接操作数据库总结与未来展望云擎未来&…

Matlab进阶绘图第57期—带填充纹理的横向柱状图

带填充纹理的横向柱状图是通过在原始横向柱状图的基础上添加不同的纹理得到的,可以很好地解决由于颜色区分不足而导致的对象识别困难问题。 由于Matlab中未提供纹理填充选项,因此需要大家自行设法解决。 本文使用Kesh Ikuma制作的hatchfill2工具&#…

Nginx | 正向代理与Proxy插件整合

写在前面 🍁个人主页:微枫Micromaple 在企业开发环境中,局域网内的设备通常需要通过正向代理服务器访问互联网。正向代理服务器充当中介,帮助客户端请求外部资源并返回结果。局域网内也就是我们俗称的内网,局域网外的互…

docker安装etcd

1.查找etcd镜像 docker search etcdNAME: 镜像仓库源的名称 DESCRIPTION: 镜像的描述 STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。 OFFICIAL: 是否 docker 官方发布 2.拖取镜像并生成对应容器 docker run --name etcd -d -p 2379:2379 -p 2380:2380 …