Heim >Backend-Entwicklung >Golang >Geerbtes Strukturarray in Go Lang
Go Lang ist eine moderne Programmiersprache, die sich aufgrund ihrer Einfachheit und Effizienz schnell in der Programmierwelt durchgesetzt hat. In Go Lang ist Struktur ein allgemeiner Datentyp, der zum Organisieren und Speichern einer Reihe zusammengehöriger Daten verwendet werden kann. In einigen Fällen müssen wir jedoch möglicherweise ein Array mit mehreren Strukturen definieren, diese bearbeiten und von ihnen erben. In diesem Artikel wird erläutert, wie Sie in Go Lang geerbte Strukturarrays erstellen und verwenden, um komplexe Datenstrukturen und Programmieranforderungen besser bewältigen zu können.
Vor kurzem habe ich angefangen, ein Schachspiel in Golang zu erstellen, und ein Problem, mit dem ich konfrontiert war, bestand darin, verschiedene Charaktere (z. B. Bauer, Springer, König) in einem einzigen Array zu speichern.
package main import "fmt" type character struct { currposition [2]int } type knight struct { c character } func (k knight) move() { fmt.println("moving kinght...") } type king struct { c character } func (k king) move() { fmt.println("moving king...") }
Können wir im obigen Beispiel Ritter und König in dasselbe Array einfügen, da sie von derselben Basisklasse erben?
Gefällt mir
characters := []character{Knight{}, King{}}
Verwenden Sie Basic Interface als Polymorphismus.
type character interface { move() pos() [2]int } type knight struct { pos [2]int } func (k *knight) move() { fmt.println("moving kinght...") } func (k *knight) pos() [2]int { return k.pos } type king struct { pos [2]int } func (k *king) move() { fmt.println("moving king...") } func (k *king) pos() [2]int { return k.pos }
Die folgenden Aussagen ergeben sich mit dieser Änderung:
characters := []character{&Knight{}, &King{}}
Außerdem benötigen Sie möglicherweise einen Zeigerempfänger wie in diesem Beispiel.
Das obige ist der detaillierte Inhalt vonGeerbtes Strukturarray in Go Lang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!