Heim > Backend-Entwicklung > Golang > Geerbtes Strukturarray in Go Lang

Geerbtes Strukturarray in Go Lang

WBOY
Freigeben: 2024-02-09 09:15:22
nach vorne
1310 Leute haben es durchsucht

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.

Frageninhalt

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

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

Workaround

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

Die folgenden Aussagen ergeben sich mit dieser Änderung:

characters := []character{&Knight{}, &King{}}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage