Ответ
New в Go — это функция-конструктор, которая возвращает указатель на новый экземпляр типа. Например, new(T) выделяет память под тип T, инициализирует его нулевыми значениями и возвращает *T.
type User struct {
Name string
Age int
}
func main() {
u := new(User) // *User с Name="" и Age=0
fmt.Printf("%+v", u) // &{Name: Age:0}
}
Альтернатива — &T{}, который также создаёт указатель, но позволяет сразу инициализировать поля.
u := &User{Name: "Alice"} // явная инициализация
Разница: new только выделяет память, а &T{} может инициализировать структуру.