Allocation de structures sur la pile et le tas en Go : quel lien avec le garbage collector ?
Bonjour à tous ! Je viens de commencer à apprendre Go après C++ et Java, et la question de l'allocation mémoire pour les structures me trouble beaucoup. En C++, j'avais l'habitude de contrôler explicitement si je créais un objet sur la pile (`MyClass obj;`) ou sur le tas (`MyClass* obj = new MyClass();`). En Java, tout est toujours sur le tas, et les références sur la pile.
Mais en Go, je vois que les structures peuvent être créées comme `myStruct := MyStruct{}` (apparemment sur la pile) et comme `myStruct := &MyStruct{}` (apparemment sur le tas). De plus, Go a un garbage collector. Je suis complètement perdu.
Par exemple, j'ai ce code :
```go
type User struct {
Name string
Age int
}
func createUser(name string, age int) *User {
u := User{Name: name, Age: age}
return &u // Je retourne un pointeur vers une variable locale !
}
```
En C++, cela serait un comportement indéfini (pointeur