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
Linda HamiltonOriginal
2024-12-01 11:25:13694Durchsuche

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
}

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!

Stellungnahme:
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