簡體   English   中英

切片到數組指針的轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM