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

标签 arrays go slice

我正在尝试编写一个读取 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/

相关文章:

python - 从匹配索引开始循环多次遍历列表

java - int[] table = new int[10],x;是有效语法吗?

go - Go 语言中导出和未导出的字段

docker - 用于调试的 Golang docker 文件

python - 负边界切片

pandas - 根据时间间隔使用 DatetimeIndex 对 Pandas 数据帧进行切片

php - 将数组转换为对象以自动化 array_key_exists()

php - 检查一个数组的元素是否在 PHP 中的另一个数组中

java - 迭代器字符串数组未获取所有元素

unit-testing - 在结构内部的方法中测试错误响应