我有以下2个结构
type AAAA struct{
Aa [2]byte
Ab [2]byte
Ac [3]byte
}
type BBBB struct{
Ba [4]byte
Bb [2]byte
Bc [3]byte
Bd [2]byte // No Of Struct AAA Items
BBStr []AAAA
}
所以Struct BBB在Struct AAA中重复
然后我有一个我输入的字符串,其中包含作为输入结构的值
输入:=" aaaabbccc02ddeefffddeefff" (此处02结构AAAA在结构BBBB中重复)#
我需要读取输入字符串并填充BBBB结构,包括结构AAA数组
我写了下面的函数来实现这个目的。但我得到"错误 - binary.Read:无效类型* main.BBBB
需要帮助来确定此错误的原因?还有办法以不同的方式做到这一点吗?
func main() {
input := "aaaabbccc02ddeefffddeefff"
var k BBBB
var j AAAA
k.BBStr = append(k.BBStr,j)
k.BBStr = append(k.BBStr,j)
xyz := []byte(input)
err := binary.Read(bytes.NewReader(xyz), binary.LittleEndian, &k)
if err != nil {
fmt.Println("Bad error - ",err)
}
fmt.Println("Structure Definition - ",k)
}
答案 0 :(得分:0)
https://golang.org/pkg/encoding/binary/#Read处的文档说:
数据必须是指向固定大小值或固定大小值切片的指针。
表示在编译时必须知道Read
类型的大小。您的struct BBBB
包含一片[]AAAA
,这意味着它的长度仅在运行时才知道。如果你把它做成一个固定大小的数组,例如[16]AAAA
,它会起作用。