Wie vermeide ich Kompilierungsfehler beim Zugriff auf eingebettete Strukturfelder in Go?

Linda Hamilton
Freigeben: 2024-10-27 10:28:30
Original
271 Leute haben es durchsucht

How to Avoid Compilation Errors When Accessing Embedded Struct Fields 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>
Nach dem Login kopieren

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

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

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!