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

Geerbtes Strukturarray in Go Lang

WBOY
WBOYnach vorne
2024-02-09 09:15:221294Durchsuche

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...")
}

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{}}

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 }

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen