Я пытаюсь ознакомиться с interface{}
в Go. Я пытался:
var m map[string]string
m["time"] = "asdf"
и получить ошибку:
присвоение записи в нулевой карте
Я не уверен, почему я получаю сообщение об ошибке.
когда переменная объявляется без добавления к ней значения, она имеет значение по умолчанию. В вашем случае значение карты по умолчанию равно нулю. Проверьте эту ссылку на значения по умолчанию для всех типов Go. yourbasic.org/golang/default-zero-value
м := карта[строка]строка{}
Значение карты m равно нулю.
Функция make выделяет и инициализирует структуру данных хэш-карты и возвращает значение карты, указывающее на нее.
m := make(map[string]string)
m["time"] = "asdf"
Прочтите распределения в разделе make спецификаций.
Вам нужно использовать make (встроенную функцию), например
make(map[string]string, 0)
для инициализации карты
https://golang.org/doc/efficient_go.html#allocation_makehttps://golang.org/doc/efficient_go.html#maps
Когда вы объявляете переменную следующим образом:
var m map[string]string
вашей переменной m
присваивается значение по умолчанию map
, то есть nil
, а не пустая карта. Вот почему вы получаете эту ошибку, вы пытаетесь добавить значение к нулевой карте.
Чтобы инициализировать пустую карту, вы можете попробовать любой из них:
var m map[string]string = map[string]string{}
m := make(map[string]string)
m := map[string]string{}
Здесь статья о значениях по умолчанию для всех типов Go.
1. Ваша ошибка означает, что вы пытаетесь присвоить нулевой карте.
m
— нулевая карта, потому что вы не присвоили ей никакого значения. Google для этой ошибки, и вы найдете бесчисленное множество объяснений исправления. 2. В вашем коде или вопросе нет интерфейсов, поэтому заголовок не имеет смысла.