Heim >Backend-Entwicklung >Golang >Wie vermeide ich Kompilierungsfehler beim Zugriff auf eingebettete Strukturfelder in Go?
Eingebetteter Strukturtyp-Feldzugriff
Beim Definieren neuer Strukturtypen ist es möglich, andere Strukturen als Felder einzubetten. Dies kann nützlich sein, um komplexe Datenstrukturen zu erstellen oder Funktionen zu erben. Allerdings kann der Zugriff auf eingebettete Strukturfelder aufgrund der Zeigerverarbeitung manchmal zu Kompilierungsfehlern führen.
Beachten Sie den folgenden Code:
<code class="go">type Engine struct { power int } type Tires struct { number int } type Cars struct { *Engine Tires } func main() { car := new(Cars) car.number = 4 car.power = 342 fmt.Println(car) }</code>
Dieser Code versucht, eine Engine-Struktur als Zeigerfeld einzubetten ( *Motor) in der Struktur „Autos“. Obwohl die Syntax korrekt ist, führt das Kompilieren des Codes zu folgendem Fehler:
panic: runtime error: invalid memory address or nil pointer dereference [signal 0xb code=0x1 addr=0x0 pc=0x23bb]
Um dieses Problem zu beheben, ist es notwendig, das eingebettete Engine-Feld korrekt zu initialisieren. Dies kann mithilfe von Zeigern auf die eingebettete Struktur erreicht werden:
<code class="go">func main() { car := new(Cars) car.Engine = new(Engine) // Initialize the Engine pointer car.power = 342 car.number = 4 fmt.Println(car) }</code>
Jetzt wird der Code erfolgreich kompiliert und greift auf das eingebettete Feld „power“ zu, ohne dass Fehler auftreten.
Das obige ist der detaillierte Inhalt vonWie vermeide ich Kompilierungsfehler beim Zugriff auf eingebettete Strukturfelder in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!