我有一个看起来像这样的结构:
type Record struct {
Name string
QuestionType [2]byte // Array may be arbitrary length
Class [3]byte
}
我试图用来自 a 的字节填充结构bytes.Buffer(由于字节数据的一些额外的复杂性,我无法使用 binary.Read。)我正在使用reflect包来迭代结构的元素,并从bytes.Buffer 进入结构。
func fillStructure(buffer *bytes.Buffer) *Record {
// This is hard-coded now, but will be passed in as an interface later
myStruct := Record{}
reflectedStruct := reflect.ValueOf(&myStruct).Elem()
for i := 0; i < reflectedStruct.NumField(); i++ {
field := reflectedStruct.Field(i)
if field.Kind() == reflect.Array {
// Copy bytes from buffer into structure
}
}
return &myStruct
}
但是,当我尝试用缓冲区中的 n 个字节填充 [n] 字节数组时,我发现自己无法将返回的切片复制buffer.Next(n)到结构中的数组中。
field.Set() 不起作用,因为 []byte 与 [n]byte 不兼容。
copy() 不起作用,因为我找不到获取结构数组切片的方法
问题:有没有办法获得反射结构数组的切片“视图”,以便我可以复制值?或者通过其他方式将缓冲区返回的切片复制到结构中?
沧海一幻觉
相关分类