今年 315 唯一的好消息是,Golang 1.18 版本发布。
新特性
- 支持泛型 Generics
- 模糊测试 Fuzzing
- Workspaces
- 性能提升 20%。但是由于支持了泛型,编译时间比 1.17 慢 15%。
总体而言,新特性,我个人基本用不上。。。我果然是一个不合格的 CRUD 程序员。
泛型 Generics
golang 官方文档介绍得通俗易懂,不需要过多解释。
可惜,我至今所有语言都没用过泛型这个特性。
模糊测试 Fuzzing
使用随机数据进行测试,以发现代码缺陷或者会导致崩溃的输入。例如:
- SQL 注入
- buffer overflow
- denial of service
- cross-site scripting attacks
Workspaces
一个 Workspaces 可以包含多个 go module。我目前想不到我能用到的使用场景。
升级 Go 1.18 版本
查看当前开发机上的 golang 版本:
> go version
go version go1.16.3 linux/amd64
删除旧版本:
> which go
/usr/local/go/bin/go
> sudo rm -rf /usr/local/go
到 go 下载页,下载最新版:
安装方法参考Ubuntu 安装 golang,把里面的 1.13 替换为 1.18 即可, 步骤是一样的。
安装后,确认一下版本即可:
> go version
go version go1.18 linux/amd64
go.mod
升级后,go.mod 里的版本号怎么处理呢?
我手动将 go.mod 中的 go 版本由 1.16 修改为 1.18。再次 go build
> go build
go: updates to go.mod needed; to update it:
go mod tidy
安装提示 go mod tidy 之后,就可以正常编译了。
tags: golang 升级