Go 1.18新特性学习笔记01: 安装
2022-03-16
Go 1.18这个大型版本终于发布了,包括新功能、性能改进以及对语言的最大改变。 官方博客称Go 1.18的部分设计甚至开始于10年前首次发布Go的时候。具体来说,Go 1.18包含以下几大特性:
- 泛型(Generics): Go 1.18开始引入了泛型的支持。现在我们可以从Go官方的泛型教程来学习这个新特性,另外在Go 1.18的发布说明中也有很多关于泛型的使用细节。
- 模糊测试(Fuzzing): Go成为第一个将模糊测试完全集成到其标准工具链中的主要语言。可以从Go官方的Fuzzing教程中开始学习。
- 工作空间(Workspaces): Go Module已经被广泛使用,目前Gopher在使用Go Module时最常见的挑战是如何应对在多个Module间工作。Go 1.18通过新的Go工作空间模式解决了这一问题。
- 20%性能提升: AppleM1、ARM64和PowerPC64用户会很开心! 因为Go 1.17的寄存器ABI调用约定扩展到这些架构,Go 1.18提供了高达20%的性能改进。
安装Go 1.18 #
我在开发机上上的Go版本管理策略如下: 使用MacOS Homebrew安装的go作为主要版本, 因为Go的Homebrew Formula版本更新会延迟Go官方的发布。
所以为了体验Go新版本的特性或者同时在本地保留多个Go的版本,会使用Go Wrapper程序golang.org/dl
下载对应版本的Go Wrapper,再使用Wrapper下载安装对应的Go。
为了安装和体验Go 1.18,先使用go install
安装Go 1.18的Wrapper:
1go install golang.org/dl/go1.18@latest
使用wrapper安装Go 1.18:
1go1.18 download
2Downloaded 0.0% ( 16384 / 143698502 bytes) ...
3Downloaded 0.1% ( 98304 / 143698502 bytes) ...
4Downloaded 7.4% ( 10616752 / 143698502 bytes) ...
5Downloaded 15.3% ( 21987168 / 143698502 bytes) ...
6Downloaded 23.4% ( 33586944 / 143698502 bytes) ...
7Downloaded 31.6% ( 45399728 / 143698502 bytes) ...
8Downloaded 39.5% ( 56802896 / 143698502 bytes) ...
9Downloaded 47.5% ( 68320768 / 143698502 bytes) ...
10Downloaded 55.8% ( 80231840 / 143698502 bytes) ...
11Downloaded 63.5% ( 91307344 / 143698502 bytes) ...
12Downloaded 71.5% (102710528 / 143698502 bytes) ...
13Downloaded 78.4% (112704688 / 143698502 bytes) ...
14Downloaded 86.0% (123583584 / 143698502 bytes) ...
15Downloaded 93.7% (134691840 / 143698502 bytes) ...
16Downloaded 100.0% (143698502 / 143698502 bytes)
17Unpacking $HOME/sdk/go1.18/go1.18.darwin-amd64.tar.gz ...
18Success. You may now run 'go1.18'
查看Go 1.18的安装位置:
1go1.18 env GOROOT
使用时以wrapper程序go1.18
作为go命令使用。
如果以VS Code作为IDE,是可以将VS Code的Go扩展插件的配置go.goroot
指定为go 1.18的安装位置的,以让VS Code使用go 1.18。
当然,我这里不推荐你添加go.goroot
的配置,因为VS Code的Go扩展可以自动发现已经安装的Go版本:
可以通过查看VS Code左下角的状态栏项目来查看当前的Go版本,通过点击这个状态栏项目,并通过Choose Go Environment
来切换选择使用某个Go版本。