Go は多重継承をサポートしていませんが、単一の型に対して複数のインターフェイスを実装することは可能です。これにより、複数のインターフェイスの要件に準拠する型を定義できます。
この例では、Card インターフェイスと、Card インターフェイスを実装するカード構造体があります。 Card インターフェイスを使用してカードを表現できるようにしたいと考えていますが、カードの文字列表現も必要です。
これを解決するには、Stringer インターフェイスを定義できます。
type Stringer interface { String() string }
次に、カード構造体に Card インターフェイスと Stringer インターフェイスの両方を実装させます。
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()) }
これにより、Card インターフェイスを使用して次のことを表現できるようになります。
このアプローチでは、カード構造体の実装の詳細が隠蔽されないことに注意してください。実装の詳細を本当に非表示にしたい場合は、ファクトリ関数を使用して Card 値を作成し、Card インターフェイスのみをクライアントに返すことができます。
func NewCard(num int) Card { newCard := card{ cardNum: num, face: faces[num%len(faces)], suit: suits[num/len(faces)], } return &newCard }
これにより、公開せずに Card 値を作成できます。カード構造体の実装の詳細
以上がGo で 1 つの型に対して複数のインターフェイスを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。