Go1.20 新特性:切片转数组

Go1.20正式版预计2023年2月发布,已发布的Go1.20rc版本中引入了切片转数组功能。此功能简化了标准库中的操作并提升了代码的美观性。需要注意的是,当切片长度小于目标数组长度时会导致panic。

Go1.20 正式版本还没有发布,官方计划 2023 年 2 月份发布。不过,Go1.20rc 已经在 12 月 8 号发布了,一起来尝鲜。

语言特性方面主要有四个优化,其中最主要的添加了 切片转数组 功能。

其实在 Go1.17 版本,Go语言已经有 切片转数组指针 的功能。

可以看 P 神的这篇文章,了解下详情。

引入 切片转数组指针 特性之后,bradfitz 在改造标准库时就有了下面这次更改

【截图】

但是在代码 review 时,他发现这样写有点“丑”,需要先取得数组指针再解引用,然后返回数组。

所以他就想能不能直接通过切片取得数组,而不是数组指针。后面就有了这个提案:切片转数组。

目前这个提案已经加入到 Go1.20 版本里,官方文档已经更新,如下:

【截图】

下面是官方给出的例子:

s := make([]byte, 2, 4)

a0 := [0]byte(s)
a1 := [1]byte(s[1:])     // a1[0] == s[1]
a2 := [2]byte(s)         // a2[0] == s[0]
a4 := [4]byte(s)         // panics: len([4]byte) > len(s)

s0 := (*[0]byte)(s)      // s0 != nil
s1 := (*[1]byte)(s[1:])  // &s
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Seekload

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值