Одна из самых приятных вещей в Go, это предсказуемость. Ты объявляешь переменную, ничего ей не присваиваешь, и всё равно получаешь понятное, безопасное значение. Не мусор из памяти, не undefined, не сюрприз в рантайме на пустом месте, а нормальный стартовый state.
Именно это в Go называется
zero value.
Тема кажется простой только на первый взгляд. На деле zero values в Go влияют вообще на всё: на поведение переменных, на работу со структурами, на проектирование API, на удобство стандартной библиотеки и даже на то, насколько безопасно будет пользоваться твоим кодом другим разработчикам.
В этой статье разберём:
- что такое zero values в Go
- какие значения по умолчанию получают разные типы
- почему zero value в Golang, это часть философии языка
- какие типы работают сразу после объявления
- чем отличается nil slice от nil map
- когда нужен make, а когда нужен NewXxx
- какие ошибки с zero values чаще всего допускают Go-разработчики