Maison > Article > développement back-end > Comment le compilateur de Go gère-t-il les fonctions imbriquées ?
Lors de l'écriture de fonctions imbriquées dans go, comment le compilateur les gère-t-il ? Devient-elle une autre fonction et placée en dehors du code, ou est-elle recréée lorsque la fonction parent est appelée ?
Par exemple :
func funca() int { a := 0 funcb := func(_a int) int { return _a } return funcb(a) }
Cette fonction est-elle compilée comme suit ?
func FuncA() int { a := 0 return _funcB(a) } func _funcB(_a int) int { return _a }
Ou compile-t-il exactement comme écrit, ce qui signifie qu'une nouvelle mémoire est allouée à chaque fois que la définition de funca
时都会为 funcb
est appelée ?
Les fonctions imbriquées sont compilées une seule fois.
Étant donné que FuncB ne ferme pas les variables dans la portée environnante, FuncA n'alloue pas de mémoire tas.
Si FuncB ferme des variables dans la portée environnante, alors ces variables seront allouées sur le tas. La fonction elle-même est compilée une fois.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!