在 Go 中將切片轉換為數組
在 Go 中,嘗試直接將切片分配給數組將導致編譯錯誤。本題探討如何將特定長度的切片轉換為陣列。
問題陳述
考慮一個結構體,定義一個帶有由4 個數組組成的Magic 字段的前導塊bytes:
type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 }
任務是使用以下命令將4 個位元組的切片分配給Magic字段語法:
lead := Lead{} lead.Magic = buffer[0:4] // Attempt to assign slice to array
解
要將指定長度的切片轉換為數組,Go 提供了以下方法:
將copy()與數組子切片一起使用
內建透過將數組視為切片,可以欺騙copy 函數將切片複製到數組:
copy(varLead.Magic[:], someSlice[0:4])
使用For循環
迭代切片元素並將它們分配給數組elements:
for index, b := range someSlice { varLead.Magic[index] = b }
使用數組文字
另一種方法是直接使用陣列文字:
type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 } lead := Lead{Magic: [4]byte{0x12, 0x34, 0x56, 0x78}}
以上是如何將 Go 切片轉換為陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!