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

文章目录

    今年 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 之后,就可以正常编译了。

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式