我正在try 编写一个读取RPM文件的应用程序.每个挡路的开头都有一个[4]byte%的魔力字符.

这是我的 struct

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型?

推荐答案

内置方法copy只会将一个切片复制到一个切片,而不会将一个切片复制到一个array.

您必须欺骗copy,使其认为数组是一个切片

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

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

for index, b := range someSlice {

    varLead.Magic[index] = b

}

或者像zupa用文字做的那样.我在他们的工作榜样上增加了一些内容.

Go Playground

Go相关问答推荐

杜松子wine -戈尼克背景在 children 围棋例行公事中被取消

Golang ==错误:OCI运行时创建失败:无法启动容器进程:exec:./" bin:stat./" bin:没有这样的文件或目录:未知

创建服务时云运行触发器执行失败

如何解析Go-Gin多部分请求中的 struct 切片

从 wincrypt API 到 Go 的 RC2 解密

如何获取集群外go Kubernetes客户端的当前命名空间?

无法读取postman 中的表单数据

Golang Fiber Render - 将数据发送到多个布局

3 字节切片和有符号整数类型之间的转换

如何在golang中使用viper获取对象的配置数组?

我应该先解锁然后再广播吗?

Secrets Manager Update Secret - Secret String 额外的 JSON 编码

我无法使用反向代理更改主机标头

如何使用 sync.WaitGroup 来执行所有的 goroutine?

在 .go 文件中运行一个函数和在 Go 模板中调用它有什么区别?

如何将元素从一个切片移动到另一个切片

在 go 中将运行命令的标准输出发送到其标准输入

防止在 Go 公用文件夹中列出目录

如何获得Ent中数字列的总和

手动下载并放置一个 golang mod 文件