[英]Conversion of slice to array pointer
如Spec中所述,將切片轉換為數組指針會生成指向切片底層數組的指針。
s := make([]byte, 2, 4)
s0 := (*[0]byte)(s) // s0 != nil
但編譯器給出錯誤: cannot convert s (variable of type []byte) to *[0]byte
此轉換已添加到Go 1.17中的語言中。
語言的變化
Go 1.17 包括對該語言的三個小改進。
- 從 slice 到數組指針的轉換:
[]T
類型的表達式s
現在可以轉換為數組指針類型*[N]T
。 如果a
是此類轉換的結果,則范圍內的相應索引指的是相同的基礎元素:&a[i] == &s[i] for 0 <= i < N
。 如果len(s)
小於N
,則轉換會發生混亂。- [...]
這意味着您需要 Go 1.17 或更高版本才能使用此類轉換。 它在Go Playground上運行良好(目前 Playground 使用最新的 Go 1.19)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.