Я пытаюсь получить данные из API. Когда я получаю данные из API:
result, _ := s.GetCases() // get cases via api
fmt.Println(reflect.TypeOf(result.Records[0]["Cases"]))
Он показывает тип результата.Records[0]["Cases"] is map[string]interface {}
Однако, по-видимому, я не могу напрямую использовать его в качестве карты. С:
fmt.Println(reflect.TypeOf(result.Records[0]["Cases"]["Id"]))
Это вызовет ошибку компилятора:
недопустимая операция: невозможно проиндексировать результат. Записи[0]["Случаи"] (индекс карты выражение интерфейса типа{})
Могу ли я узнать, как мне использовать этот тип в golang?
Значение имеет тип interface{}
, и на основе вывода отражения этот интерфейс имеет значение map[string]interface{}
. Итак, вам нужно получить фактическое значение, хранящееся в интерфейсе, с помощью утверждения типа:
fmt.Println(reflect.TypeOf(result.Records[0]["Cases"].(map[string]interface{})["Id"]))
Если вы можете, вероятно, лучше разобрать ответ API непосредственно в соответствующую структуру данных (например, с помощью json.Unmarshal в срез структур).