有没有方便的方法来初始化字节数组?

package main
import "fmt"
type T1 struct {
  f1 [5]byte  // I use fixed size here for file format or network packet format.
  f2 int32
}
func main() {
  t := T1{"abcde", 3}
  // t:= T1{[5]byte{'a','b','c','d','e'}, 3} // work, but ugly
  fmt.Println(t)
}

掠夺.go:8:无法在字段值中将"abcde"(类型字符串)用作类型[5]uint8

如果我换成t := T1{[5]byte("abcde"), 3}

proc.go:8:无法将"abcde"(类型字符串)转换为类型[5]uint8

推荐答案

您可以将字符串复制到字节数组的片段中:

package main
import "fmt"
type T1 struct {
  f1 [5]byte
  f2 int
}
func main() {
  t := T1{f2: 3}
  copy(t.f1[:], "abcde")
  fmt.Println(t)
}

编辑:根据jimt的建议,使用T1文本的命名形式.

Go相关问答推荐

golang父进程的副本无法进行https/tls调用并获得tls:未能验证证书""

由于索引器压缩比限制,扫描包含golang包的图像时,伪影XRAY失败

golang.org/x/oauth2 oauth2.Config.Endpoint.TokenURL mock:缺少access_token

错误.如果它包含切片,则返回FALSE

在GO中创建[]字符串类型的变量

GORM:一个表的两个外键

如何使redis池的等待超时

是否可以将 http.ServeHttp 包装在 go 中以使用 alexedwards/scs/v2 添加会话

Golang 中的泛型类型转换

致命错误 - 所有 Goroutines 都睡着了!僵局

从Go中的随机日期开始以天为单位获取时间

使用 ssh 从私有 gilab 仓库导入一个 go 项目:未知修订

查找、解析和验证邮箱地址

使用 Golang 在字符串中循环重复数据

对所有标志进行 ORing 的简短方法

如何在测试中使用自定义标志(使用`testify/suite`)

Golang - 使用正则表达式提取链接

Go模板中的浮点除法

带有 grpc 的 protobuf 用于拆分包中的 Go

有没有一种方法可以确保传递的值具有使用泛型的某些字段?