Maison >développement back-end >Golang >Comment résoudre les erreurs de « type récursif invalide » dans les définitions Go Struct ?
Dans Go, lorsque vous tentez de définir une structure avec un type récursif, telle qu'une structure d'environnement avec un champ parent qui fait référence à son propre type, vous pouvez rencontrer l'erreur « type récursif non valide ». Voici comment résoudre ce problème et comprendre la raison sous-jacente :
Dans Go, une structure qui fait directement référence à son propre type empêchera le compilateur de déterminer la taille. de la structure. Pour résoudre ce problème, nous devons utiliser un pointeur vers la structure au lieu d'inclure directement la structure.
La version corrigée suivante de la structure d'environnement utilise un pointeur vers son parent field :
type Environment struct { parent *Environment // note that this is now a pointer symbol string value RCFAEValue }
En utilisant un pointeur, nous permettons au compilateur de déterminer la taille de la structure puisque la taille d'un pointeur est prédéfini.
Lors de la création d'un nouvel environnement, nous devons transmettre un pointeur vers l'environnement parent au lieu de l'environnement lui-même :
Environment{&fun_Val.ds, fun_Val.param, exp.arg_exp.interp(env)}
Cela garantit que nous utilisons le type correct et que la structure est valide.
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!