Вы не можете перебрать значение типа interface{}
, то есть типа, которое вы получите при поиске по любому ключу вашей карты (поскольку он имеет тип map[string]interface{}
).
Вы должны использовать утверждение типа , чтобы получить значение этого типа, от которого вы можете затем установить диапазон.
myElt := myMap["element"]
v, ok := myElt.([]map[string]string)
if !ok {
// TODO: Handle the error
}
for i, item := range v {
// TODO: do something with each map[string]string item in the slice
}
Вот пример рабочей площадки с использованиемПридуманная настройка для этих типов карт.
Если вы знаете, что значение относится к указанному типу среза, вы можете пропустить проверку ok
в утверждении типа.Это может иметь место, если вы используете чью-либо реализацию универсальной карты (которая имеет ключи типа interface{}
) и знаете, что вы когда-либо заполняете ее только значениями типа []map[string]string
.Однако, будьте осторожны: если вы получите значение , а не этого типа с карты, и вы пропустите проверку, ваша программа будет паниковать.