gpt4 book ai didi

arrays - 如何将 slice 转换为数组?

转载 作者:IT老高 更新时间:2023-10-28 13:01:30 25 4
gpt4 key购买 nike

我正在尝试编写一个读取 RPM 文件的应用程序。每个 block 的开头都有一个 [4]byte 的 Magic char。

这是我的结构

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]

我正在网上搜索,但不确定如何从 slice 转到数组(无需复制)。我总是可以制作 Magic []byte(甚至是 uint64),但我更好奇我将如何从 type []byte[4]byte 如果需要?

最佳答案

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

你必须欺骗 copy 让他们认为数组是一个 slice

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

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

for index, b := range someSlice {

varLead.Magic[index] = b

}

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

Go Playground

关于arrays - 如何将 slice 转换为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19073769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com