Ответ 1
Вы всегда можете использовать interface{}
для хранения любого типа. Поскольку в документации в пакете encoding/json
говорится:
Чтобы размонтировать JSON в значение интерфейса, Unmarshal unmarshals JSON в конкретное значение, содержащееся в значении интерфейса. Если значение интерфейса равно nil, то есть не имеет конкретного значения, хранящегося в нем, Unmarshal сохраняет одно из них в значении интерфейса:
bool, для JSON booleans
float64, для номеров JSON
строка для строк JSON
[] интерфейс {}, для массивов JSON
map [string] interface {}, для объектов JSON
nil для JSON null
Просто выполните следующие действия:
m := map[string]interface{}{"a":"apple", "b":2}