Maison >développement back-end >Golang >Comment résoudre l'erreur « type récursif invalide » lors de l'utilisation de types récursifs dans Go Structs ?
Type récursif dans une structure en Go
La création de structures de données avec des types récursifs peut conduire à l'erreur "type récursif invalide" dans Go. Prenons le cas de la définition d'une structure Environment :
type Environment struct { parent Environment symbol string value RCFAEValue }
Ce code entraîne l'erreur car le compilateur ne peut pas déterminer la taille de l'Environnement. Le champ parent lui-même contient un Environnement, conduisant à une régression infinie.
Pour résoudre ce problème, l'Environnement doit être modifié pour utiliser un pointeur vers un autre Environnement au lieu de l'intégrer directement :
type Environment struct { parent *Environment // note that this is now a pointer symbol string value RCFAEValue }
La taille d'un pointeur est connue, contrairement à une structure auto-référencée.
Lors de la création d'un Environnement, la nouvelle syntaxe reflète le pointeur changement :
Environment{&fun_Val.ds, fun_Val.param, exp.arg_exp.interp(env)}
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!