我是Go的新手,正在尝试编写一个读取RPM文件的应用程序。每个块的开头都有的魔术字符[4]byte。
[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?
[]byte
uint64
内置方法 copy 只会将一个切片复制到一个切片,而不是将切片复制到一个数组。
您必须欺骗 复制 以将数组视为切片
copy(varLead.Magic[:], someSlice[0:4])
或使用for循环进行复制:
for index, b := range someSlice { varLead.Magic[index] = b }
或者按照zupa所做的使用文字进行操作。我已添加到他们的工作示例中。
去游乐场