今年 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 升级