Go 1.18 版本新特性,及升级步骤

更新日期: 2022-03-16 阅读次数: 19446 字数: 384 分类: golang

今年 315 唯一的好消息是,Golang 1.18 版本发布。

新特性

  • 支持泛型 Generics
  • 模糊测试 Fuzzing
  • Workspaces
  • 性能提升 20%。但是由于支持了泛型,编译时间比 1.17 慢 15%。

详见:https://go.dev/blog/go1.18

总体而言,新特性,我个人基本用不上。。。我果然是一个不合格的 CRUD 程序员。

泛型 Generics

golang 官方文档介绍得通俗易懂,不需要过多解释。

https://go.dev/doc/tutorial/generics

可惜,我至今所有语言都没用过泛型这个特性。

模糊测试 Fuzzing

使用随机数据进行测试,以发现代码缺陷或者会导致崩溃的输入。例如:

  • SQL 注入
  • buffer overflow
  • denial of service
  • cross-site scripting attacks

https://go.dev/doc/tutorial/fuzz

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 下载页,下载最新版:

https://go.dev/dl/

安装方法参考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 升级

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式