小编典典

在Golang中如何将切片转换为数组

go

我是Go的新手,正在尝试编写一个读取RPM文件的应用程序。每个块的开头都有的魔术字符[4]byte

这是我的结构

type Lead struct {
  Magic        [4]byte
  Major, Minor byte
  Type         uint16
  Arch         uint16
  Name         string
  OS           uint16
  SigType      uint16
}

我正在尝试执行以下操作:

lead := Lead{}
lead.Magic = buffer[0:4]

我在网上搜索,不确定如何从切片到数组(不进行复制)。我总是可以制作魔术[]byte(甚至是uint64),但我对如何从类型[]byte转换为更好奇[4]byte


阅读 2207

收藏
2020-07-02

共1个答案

小编典典

内置方法 copy 只会将一个切片复制到一个切片,而不是将切片复制到一个数组。

您必须欺骗 复制 以将数组视为切片

copy(varLead.Magic[:], someSlice[0:4])

或使用for循环进行复制:

for index, b := range someSlice {

    varLead.Magic[index] = b

}

或者按照zupa所做的使用文字进行操作。我已添加到他们的工作示例中。

去游乐场

2020-07-02