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。