Heim > Backend-Entwicklung > Golang > Wie behebe ich den Fehler „Ungültiger rekursiver Typ' bei der Verwendung rekursiver Typen in Go-Strukturen?

Wie behebe ich den Fehler „Ungültiger rekursiver Typ' bei der Verwendung rekursiver Typen in Go-Strukturen?

Linda Hamilton
Freigeben: 2024-12-01 11:25:13
Original
686 Leute haben es durchsucht

How to Resolve the

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
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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)}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage