在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