Rekursiver Typ in einer Struktur in Go
Das Erstellen von Datenstrukturen mit rekursiven Typen kann in Go zum Fehler „Ungültiger rekursiver Typ“ führen. Nehmen wir den Fall der Definition einer Umgebungsstruktur:
type Environment struct { parent Environment symbol string value RCFAEValue }
Dieser Code führt zu einem Fehler, da der Compiler die Größe der Umgebung nicht bestimmen kann. Das übergeordnete Feld selbst enthält eine Umgebung, was zu einer unendlichen Regression führt.
Um dieses Problem zu beheben, sollte die Umgebung so geändert werden, dass sie einen Zeiger auf eine andere Umgebung verwendet, anstatt sie direkt einzubetten:
type Environment struct { parent *Environment // note that this is now a pointer symbol string value RCFAEValue }
Im Gegensatz zu einer selbstreferenzierenden Struktur ist die Größe eines Zeigers bekannt.
Beim Erstellen einer Umgebung spiegelt die neue Syntax den Zeiger wider ändern:
Environment{&fun_Val.ds, fun_Val.param, exp.arg_exp.interp(env)}
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Ungültiger rekursiver Typ' bei der Verwendung rekursiver Typen in Go-Strukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!