Есть ли способ создать карту на несколько структур, а затем использовать ее?
У меня есть несколько различных структур, которые реализуют один и тот же интерфейс и соответствуют типам ввода для каждой структуры.
Я хочу прочитать данные из разных входов в структуры - не зная типа ввода во время компиляции.
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())
}
Спасибо!