Где находится экземпляр структуры, созданной через Make

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

Ответ

При использовании make для структур в Go возникает ошибка компиляции, так как make предназначен только для создания срезов, карт и каналов. Для структур используется new() или литеральная инициализация:

// Ошибка - make не работает со структурами
// s := make(MyStruct) 

// Правильные варианты:
s1 := MyStruct{}          // В стеке (если не убегает)
s2 := new(MyStruct)       // В куче
s3 := &MyStruct{}         // В куче

Расположение (стек/куча) определяется escape-анализом компилятора. Если указатель на структуру может "убежать" (например, возвращается из функции), она размещается в куче.