Go 1.17 包括对该语言的三个小改进:
-
实现从切片到数组指针的转换:如果
s
的类型是[]T
,那么现在这种类型可以将其转换为数组指针类型*[N]T
。如果a
是转换后的变量,则范围内的相应索引引用的元素相同:0 <= i < N
的情况下&a[i] == &s[i]
。如果len(s)
小于N,则转换会发生panic。 -
unsafe.Add
:unsafe.Add(ptr, len)
将len
添加到ptr
并返回更新指针unsafe.Pointer(uintptr(ptr) + uintptr(len))
。 -
unsafe.Slice
: 如果ptr
的类型是*T
,unsafe.Slice(ptr, len)
将返回一个类型[]T
的切片,其底层数组从ptr
开始,其长度和容量为len
。