Предположим, у меня есть структура с именем Test,
type Test struct {
Value1 int `json:"value1"`
Value2 int `json:"Value2"`
People map[string]string `json:"Value3"`
Timeupdate string `json:"Timeupdate"`
}
а переменная people - это набор пар ключ-значение. Как я могу определить людей внутри структуры и получить к ним доступ?
var object = Test{Value1: arg1, Value2: arg2, People: args3, Timeupdate: time.Now().String()}
как я могу определить людей внутри этого объекта и получить к ним доступ?
Это не было преднамеренным (спасибо за напоминание). Мне нужно пояснение при объявлении объекта, каким должен быть args3 (т.е. как определить людей внутри объекта)? @VincentvanderWeele
@AshwinSekhari args3 должен быть map[string]string, как и тип поля People. У вас есть вопрос, как инициализировать карту?
@mkopriva Да, вы можете привести пример, как инициализировать карту внутри объекта?
@AshwinSekhari Точно так же, как вы бы сделали это вне объекта. make(map[string]string) или map[string]string{}.

Вы можете инициализировать пустую карту:
args3 := map[string]string{}
Или карту со значениями:
args3 := map[string]string{"jane": "Jane"}
Вы можете назначить значения позже напрямую:
args3["john"] = "john"
Или после инициализации объекта:
var object = Test{Value1: arg1, Value2: arg2, People: args3, Timeupdate: time.Now().String()}
object.People["claire"] = "Claire"
Является ли маленький p (
peopleвместоPeople) преднамеренным? Это делает поле недоступным за пределами пакета, в котором определенTest, и не будет анализироваться из json. Я подозреваю, что это основная причина этого вопроса, потому что нет ничего особенного в доступе к картам внутри структур (object.people["key"]будет работать нормально).