Sobes.tech
Intern

Wat is correct over map in Go? Een map kan zonder make worden geïnitialiseerd en direct waarden worden geschreven zonder fouten Een map kan worden vergeleken met een andere map met behulp van de operator == De sleutels van een map kunnen slices zijn De toewijzing m2 := m1 creëert een verwijzing naar dezelfde map, zodat wijzigingen via m2 zichtbaar zijn in m1

sobes.tech AI

Antwoord van AI

В Go:

  • map нельзя инициализировать без make и сразу записывать в него значения без ошибок. Если объявить var m map[string]int, то m будет nil, и попытка записи вызовет panic. Для записи нужно инициализировать map через make или литерал.

  • map нельзя сравнивать с другим map с помощью оператора ==. Единственное сравнение, разрешённое для map — это проверка на nil (m == nil). Сравнение содержимого нужно делать вручную.

  • ключи map не могут быть срезами. Ключи должны быть сравнимыми типами (например, строки, числа, указатели, структуры с сравнимыми полями). Срезы не сравнимы, поэтому не могут быть ключами.

  • присваивание m2 := m1 создаёт ссылку на ту же map, изменения через m2 будут видны в m1. Map в Go — это ссылка на внутреннюю структуру, поэтому копирование переменной map копирует ссылку, а не содержимое.

Пример:

m1 := make(map[string]int)
m1["a"] = 1
m2 := m1
m2["b"] = 2
fmt.Println(m1) // map[a:1 b:2]