#tipКогда вам нужно инициализировать большие структуры, легко случайно пропустить необходимое поле. Компилятор не выдаст ошибку! Вместо этого он устанавливает всем неинициализированным полям их значения по умолчанию. Хотя такая особенность часто очень удобна, иногда может понадобиться, чтобы компилятор указывал на поля структуры, которые не были явно инициализированы.Линтеры идут на помощь! Линтер exhauststruct проверяет, что структура была полностью инициализирована. Мета-линтер golangci-lint включает в себя этот линтер, поэтому если вы уже используете golangci-lint, вы легко можете включить exhauststruct.Теперь структура может содержать поля, которые предполагается использовать как необязательные. Тогда линтер может выдавать ненужные предупреждения. Если определение структуры находится под вашим контролем, вы можете избежать ложных срабатываний линтера, добавив тег поля структуры exhaustruct:"optional" к необязательному полю.type Shape struct { Length int Width int volume int Perimeter int `exhaustruct:"optional"`}Следующая инициализация будет помечена как некорректная, потому что отсутствует volume:var b Shape = Shape{ Length: 5, Width: 3,}