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 ?

Comment résoudre l'erreur « type récursif invalide » lors de l'utilisation de types récursifs dans Go Structs ?

Linda Hamilton
Libérer: 2024-12-01 11:25:13
original
790 Les gens l'ont consulté

How to Resolve the

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
}
Copier après la connexion

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
}
Copier après la connexion

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)}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal