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

我是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

回答:

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

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

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

或使用for循环进行复制:

for index, b := range someSlice {

varLead.Magic[index] = b

}

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

去游乐场

以上是 在Golang中如何将切片转换为数组 的全部内容, 来源链接: utcz.com/qa/435723.html

回到顶部