提问人:overexchange 提问时间:8/8/2022 最后编辑:iczaoverexchange 更新时间:8/8/2022 访问量:608
切片到数组指针的转换
Conversion of slice to array pointer
问:
如规范中所述,将切片转换为数组指针会生成指向切片基础数组的指针。
s := make([]byte, 2, 4)
s0 := (*[0]byte)(s) // s0 != nil
但是编译器给出错误:cannot convert s (variable of type []byte) to *[0]byte
答:
5赞
icza
8/8/2022
#1
此转换已添加到 Go 1.17 中的语言中。
语言更改
Go 1.17 包括对语言的三个小改进。
- 从切片指针到数组指针的转换:现在可以将 type 的表达式转换为数组指针类型。如果是这种转换的结果,则范围内的相应索引引用相同的基础元素:。如果小于 ,则转换会崩溃。
s
[]T
*[N]T
a
&a[i] == &s[i] for 0 <= i < N
len(s)
N
- [...]
这意味着您需要 Go 1.17 或更高版本才能使用此类转换。它在 Go Playground 上运行良好(目前 Playground 使用最新的 Go 1.19)。
评论
0赞
overexchange
8/8/2022
我正在使用 go 1.16.9 进行测试
上一个:此代码如何生成内存对齐的切片?
下一个:不理解切片和指针 [重复]
评论