Определить и получить доступ к полю карты внутри структуры в golang?

Предположим, у меня есть структура с именем 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()}

как я могу определить людей внутри этого объекта и получить к ним доступ?

Является ли маленький p (people вместо People) преднамеренным? Это делает поле недоступным за пределами пакета, в котором определен Test, и не будет анализироваться из json. Я подозреваю, что это основная причина этого вопроса, потому что нет ничего особенного в доступе к картам внутри структур (object.people["key"] будет работать нормально).

Vincent van der Weele 11.06.2018 11:55

Это не было преднамеренным (спасибо за напоминание). Мне нужно пояснение при объявлении объекта, каким должен быть args3 (т.е. как определить людей внутри объекта)? @VincentvanderWeele

Ukiyo 11.06.2018 12:01

@AshwinSekhari args3 должен быть map[string]string, как и тип поля People. У вас есть вопрос, как инициализировать карту?

mkopriva 11.06.2018 12:04

@mkopriva Да, вы можете привести пример, как инициализировать карту внутри объекта?

Ukiyo 11.06.2018 12:07

@AshwinSekhari Точно так же, как вы бы сделали это вне объекта. make(map[string]string) или map[string]string{}.

mkopriva 11.06.2018 12:08
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
0
5
2 559
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете инициализировать пустую карту:

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"

Другие вопросы по теме