Ответ
New в Go — это идиоматический конструктор, который создаёт и инициализирует новый экземпляр типа. Обычно имеет сигнатуру func NewT(...) *T, где T — тип.
Пример:
type Config struct {
Timeout int
}
func NewConfig(timeout int) *Config {
return &Config{Timeout: timeout}
}
// Использование
cfg := NewConfig(30)
Особенности:
- Возвращает указатель (
*T), чтобы избежать копирования. - Может включать валидацию параметров.
- Позволяет скрыть детали инициализации (например, приватные поля).
Популярные примеры: bufio.NewReader, errors.New.