有什么办法可以创建一个映射到多个结构中,然后使用它吗?
我有几个不同的结构,它们实现相同的接口并为每个结构匹配输入类型。
我想从不同的输入中读取数据到结构中——在编译时不知道输入类型。
type myInput struct {
InputType string
data []bytes
}
// Will get as an input after compeleation
inputs := []myInput{
myInput{InputType: "a", data: []bytes{0x01, 0x02, 0x03}},
myInput{InputType: "b", data: []bytes{0x01, 0x02}},
}
type StructA struct {
A uint16
B uint32
}
func (a StructA) name () {
fmt.Printf("name is: %d %d", a.A, a.B)
}
type StructB struct {
C uint32
}
func (b StructB) name () {
fmt.Printf("name is: %d", b.C)
}
AorB map[string]<???> {
"a": StructA,
"b": StructB,
}
在这一点上,我不知道该怎么办。我需要通过输入类型获取正确的结构并使用初始化结构binary.Read。
for _, myInput := range (inputs) {
// ???? :(
myStruct := AtoB[myInput.InputType]{}
reader :=bytes.NewReader(input1)
err := binary.Read(reader, binary.BigEndian, &myStruct)
fmt.Printf(myStruct.name())
}
谢谢!
holdtom
相关分类