首頁 >後端開發 >Golang >如何將 Go 切片轉換為陣列?

如何將 Go 切片轉換為陣列?

Linda Hamilton
Linda Hamilton原創
2024-12-11 12:43:11532瀏覽

How to Convert a Go Slice to an Array?

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn