👣 Выделение памяти: new() vs Foo{}



▶️В чём разница между созданием структуры через new(), и через имя структуры + фигурные скобки, т.е. Foo{}?

type Foo struct {

X int

}



f1 := &Foo{}

f2 := new(Foo)




▶️Эти две конструкции ничем не различаются, в обоих случаях создается элемент Foo и возвращается указатель *Foo на вновь созданный элемент.

Только в первом случае можно еще указывать параметры f1 := &Foo{100}.



Зачем нужны два одинаковых метода? Первый & является частью указателей и применяется для операций с ними, второй для явного создания пустого объекта.



@golang_interview