Go的安装、卸载以及升级、安装指定版本

前言

家里电脑有一段时间没有使用了,突然心血来潮搬出来开发个idea小程序,结果环境乱的一塌糊涂,不知道当初弄了啥,好像是删除了什么,导致zsh一直找不到文件,解析出错。

由于不知道删除了什么,无赖只得重新安装一下Go环境,顺便记录一下安装过程,供初学者参考。

实际安装参数:

  1. 电脑:MacBook M1 ,系统为macOS 12.1
  2. 安装go版本:go1.21.4 darwin/arm64

Go简介

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。Go的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础,采取类似模型的其他语言包括Occam和Limbo,但它也具有Pi运算的特征,比如通道传输。在1.8版本中开放插件(Plugin)的支持,这意味着现在能从Go中动态加载部分函数。

与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。Go 2.0版本将支持泛型,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。

不同于Java,Go内嵌了关联数组(也称为哈希表(Hashes)或字典(Dictionaries) ),就像字符串类型一样。

MacBook安装Go

MacBook安装go有几种方法,最简单的是通过brew安装,也是最简单的。

比较推荐使用brew去安装,更新go版本时也可以使用brew。

brew安装(推荐)

查看是否安装go

查看本地是否有安装go,若显示 not installed 则表示没有安装。已经安装go,则会出现下图中的提示。

shell 复制代码
brew info go

brew 安装 go

通过brew安装最新版本的go

go 复制代码
brew install go

通过brew安装指定版本的go,如下面指令表示安装1.20版本的go。

css 复制代码
brew install go@1.20

brew 查看 go 版本

当通过brew安装go 成功后,可以通过下面的指令查看go版本。若安装成功,但是仍提示找不到go指令,则可能是没有配置好go的环境变量。

go 复制代码
go version

使用官方包安装

官网地址:golang.org/dl/

在官网下载pkg包进行安装,注意下对版本,比如博主使用的MacBook是M1芯片,就需要下载ARM64版本的pkg包。

配置Go环境变量

Mac的shell环境有两种,zsh和bash,这两种不是一个配置文件,在配置之前我们需要知道默认是哪种配置。

查看默认的shell

bash 复制代码
dscl . -read /Users/$USER UserShell

如果提示是UserShell: /bin/zsh,则默认是zsh,需要选择编辑~/.zshrc 文件。反之如果是bash,则需要选择编辑~/.bash_profile文件。

查看go的安装路径

通过brew指令可以查看go的安装目录

go 复制代码
brew list go

输出的提示如下

bash 复制代码
/opt/homebrew/Cellar/go/1.21.4/bin/go
/opt/homebrew/Cellar/go/1.21.4/bin/gofmt
/opt/homebrew/Cellar/go/1.21.4/libexec/api/ (24 files)
/opt/homebrew/Cellar/go/1.21.4/libexec/bin/ (2 files)
/opt/homebrew/Cellar/go/1.21.4/libexec/doc/ (5 files)
/opt/homebrew/Cellar/go/1.21.4/libexec/lib/ (4 files)
/opt/homebrew/Cellar/go/1.21.4/libexec/misc/ (26 files)
/opt/homebrew/Cellar/go/1.21.4/libexec/pkg/ (23 files)
/opt/homebrew/Cellar/go/1.21.4/libexec/src/ (9199 files)
/opt/homebrew/Cellar/go/1.21.4/libexec/test/ (3244 files)
/opt/homebrew/Cellar/go/1.21.4/libexec/ (6 files)

如博主的go的安装路径为/opt/homebrew/Cellar/go/1.21.4/libexec

配置go环境

接下来我们需要设置GOROOT, GOPATH, PATH三个环境变量。

bash 复制代码
export GOROOT=/opt/homebrew/Cellar/go/1.21.4/libexec
export GOPATH=$HOME/go
export PATH=$GOROOT/bin: $GOPATH/bin:$PATH

GOPATH:是go包存放的路径,可以自己自定义一个路径。

$GOPATH/bin加入 $PATH 变量,这样在终端的任何路径都能使用go包的bin目录下面的工具,不需要进入到bin目录或者指定目录,比较方便。

配置生效

bash 复制代码
source ~/.bash_profile  # 如果是bash
source ~/.zshrc  # 如果是zsh

卸载go

brew卸载

go 复制代码
brew uninstall go

手动卸载

bash 复制代码
sudo rm -rf  `/usr/local/go`
sudo rm -f /etc/paths.d/go

升级go

把brew的fomulae更新到最新版本

sql 复制代码
 brew update

更新go版本

go 复制代码
brew upgrade go

多个go版本

再使用brew安装指定版本

css 复制代码
brew install go@1.9

注意使用这种方式安装,go的安装路径不是在go路径下,而是在路径go@1.9下。

在使用brew switch go 1.9.7,切换go版本时,会找不到这个版本,因为brew switch只识别路径go。

解决版本就是mv go@1.9/1.9.7 go,把整个目录移动到go目录

或者使用下面的指令

go 复制代码
brew switch go@1.9
相关推荐
65岁退休Coder30 分钟前
LangChain v1.3.4 笔记 - 08 MCP & 相关概念
后端·python·langchain
郑州光合科技余经理32 分钟前
海外版多语言团购系统架构:主数据互通与核销边界
java·开发语言·前端·后端·系统架构·php·ai编程
vipxieliang1 小时前
ValidX 的 Date 和 DateTime vs JPA 的 Temporal 对比
java·后端
触底反弹1 小时前
🔥 从「为什么」到「怎么用」:TypeScript 类型约束与泛型完全指南
后端·面试·typescript
用户8356290780511 小时前
使用 Python 查找和替换 Word 文档中的文本
后端·python
Java编程爱好者1 小时前
Spring Boot 实现数据脱敏:自定义注解 + Jackson 序列化器
后端
神奇小汤圆1 小时前
从 ☕️Java Spring Boot → 🦀Rust Axum 体验的真实感受
后端
掘金者阿豪2 小时前
Codex 开放 1M 上下文后,我折腾了一圈才发现:新版根本不是网上教的那样配置
后端
爱勇宝3 小时前
《道德经》第 10 章:真正成熟的人,能成事但不控制一切
前端·后端·程序员
六边形6663 小时前
独立开发不知道做什么?使用 TRAE Work 抓取差评痛点,快速跑通产品立项流
前端·后端·面试