为了账号安全,请及时绑定邮箱和手机立即绑定

如何将切片转换为数组?

如何将切片转换为数组?

Go
慕的地8271018 2021-06-15 12:47:44
我正在尝试编写一个读取 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]我在网上搜索,不知道如何从切片到数组(不复制)。我总是可以制作 Magic []byte(甚至uint64),但我更好奇我将如何从类型[]byte变为[4]byte如果需要?
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

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


你必须欺骗复制认为数组是一个切片


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

或者使用 for 循环进行复制:


for index, b := range someSlice {


    varLead.Magic[index] = b


}

或者像 zupa 一样使用文字。我已经添加到他们的工作示例中。


查看完整回答
反对 回复 2021-06-28
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

您已在该结构中分配了四个字节,并希望为该四字节部分分配一个值。没有复制就没有概念上的方法来做到这一点。

看看copy内置的如何做到这一点。


查看完整回答
反对 回复 2021-06-28
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

试试这个:

copy(lead.Magic[:], buf[0:4])


查看完整回答
反对 回复 2021-06-28
  • 3 回答
  • 0 关注
  • 261 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信