Как работает функция New

«Как работает функция New» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

New в Go — это идиоматический конструктор, который создаёт и инициализирует новый экземпляр типа. Обычно имеет сигнатуру func NewT(...) *T, где T — тип.

Пример:

type Config struct {
    Timeout int
}

func NewConfig(timeout int) *Config {
    return &Config{Timeout: timeout}
}

// Использование
cfg := NewConfig(30)

Особенности:

  1. Возвращает указатель (*T), чтобы избежать копирования.
  2. Может включать валидацию параметров.
  3. Позволяет скрыть детали инициализации (например, приватные поля).

Популярные примеры: bufio.NewReader, errors.New.