Это напрямую не связано с ключевым словом new
.Вы бы получили то же поведение, если бы не инициализировали свою карту при объявлении ее с помощью ключевого слова var
, например:
var a map[string]int
a["z"] = 10
Чтобы исправить это, нужно инициализировать карту:
var a map[string]int
a = map[string]int{}
a["z"] = 10
И работает точно так же с ключевым словом new
:
p := new(map[string]int)
*p = map[string]int{}
(*p)["in p"] = 1
Причина, по которой make(map[string]int)
делает то, что вы ожидаете, заключается в том, что карта объявлена и инициализирована.
Игровая площадка Go