Я пытаюсь выполнить итерацию через interface
dialogCommands
, что является slice
. Я могу проходить через него нормально, и Println
в каждый Index
дает мне map
. Однако, это map
печатается как имеющий тип struct
Отражая кусок карт, каждая карта имеет тип struct?
if reflect.TypeOf(dialogCommands).Kind() == reflect.Slice {
commands := reflect.ValueOf(dialogCommands)
for i:=0; i<commands.Len(); i++ {
v := commands.Index(i)
fmt.Println(reflect.TypeOf(v).Kind())
fmt.Println(v)
}
Выход из этого
struct
map[options:[a b c]]
struct
map[startDialogs:[dialog1]]
Как вы можете видеть, тип является struct
но выход является map
. Как пройти через keys
из v
? Я не могу просто лечить эту карту, потому что это типа reflect.Value
, так что мне нужен способ итерацию через него, но, как вы видите, kind
является struct
в то время как Println
говорит, что это map
Update:
Вот Dialog
структура
type Dialog struct {
Dialog bson.Raw `json:"dialog" bson:"dialog"`
}
и помните, что dialogCommands
получает unmarshaled в interface{}
[map[options:[a b c]] map[startDialogs:[dialog1]]]
Вы должны включить определение dialogCommands и все, что в нем хранится, а не просто описывать его нам. Лучше всего - полная программа Go, которая будет работать на игровой площадке Go на https://play.golang.org/ –
@ ZanLynx. Я обновил лучшую информацию, как вы думаете, этого достаточно? –
Ну, этого недостаточно, чтобы заинтересовать меня в том, чтобы тыкать. Мне нужно написать все виды кода поддержки, и у меня уже есть работа. Может быть, тебе повезет с кем-то еще. –