Heim >Backend-Entwicklung >Golang >Wie kann ich in Go mehrere Schnittstellen für einen einzelnen Typ implementieren?
Go unterstützt keine Mehrfachvererbung, es ist jedoch möglich, mehrere Schnittstellen für einen einzelnen Typ zu implementieren. Dadurch können Sie einen Typ definieren, der den Anforderungen mehrerer Schnittstellen entspricht.
In Ihrem Beispiel haben Sie eine Kartenschnittstelle und eine Kartenstruktur, die die Kartenschnittstelle implementiert. Sie möchten in der Lage sein, die Kartenschnittstelle zur Darstellung von Karten zu verwenden, möchten aber auch eine String-Darstellung der Karten haben.
Um dieses Problem zu lösen, könnten Sie eine Stringer-Schnittstelle definieren:
type Stringer interface { String() string }
Und dann lassen Sie die Kartenstruktur sowohl die Karten- als auch die Stringer-Schnittstelle implementieren:
type card struct { cardNum int face string suit string } func (c *card) GetFace() string { return c.face } func (c *card) GetSuit() string { return c.suit } func (c *card) String() string { return fmt.Sprintf("%s%s", c.GetFace(), c.GetSuit()) }
Dies würde es Ihnen ermöglichen, die Kartenschnittstelle zur Darstellung von Karten zu verwenden, und Sie könnten sie auch verwenden die Stringer-Schnittstelle, um eine String-Darstellung der Karten zu erhalten.
Beachten Sie, dass dieser Ansatz die Implementierungsdetails der Kartenstruktur nicht verbirgt. Wenn Sie die Implementierungsdetails wirklich verbergen möchten, können Sie eine Factory-Funktion zum Erstellen von Kartenwerten verwenden und dann nur die Kartenschnittstelle an Clients zurückgeben.
func NewCard(num int) Card { newCard := card{ cardNum: num, face: faces[num%len(faces)], suit: suits[num/len(faces)], } return &newCard }
Dadurch können Sie Kartenwerte erstellen, ohne sie offenzulegen die Implementierungsdetails der Kartenstruktur.
Das obige ist der detaillierte Inhalt vonWie kann ich in Go mehrere Schnittstellen für einen einzelnen Typ implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!