ホームページ >バックエンド開発 >Golang >汎用メソッドのパラメーターとインターフェイスを使用して、Golang で哺乳類オブジェクトと人間オブジェクトの両方のスライスを処理するにはどうすればよいですか?

汎用メソッドのパラメーターとインターフェイスを使用して、Golang で哺乳類オブジェクトと人間オブジェクトの両方のスライスを処理するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 17:36:02646ブラウズ

How can I use generic method parameters and interfaces to process both slices of Mammal and Human objects in Golang?

Golang のジェネリック メソッド パラメータ

Golang では、関数が任意の型を受け入れられるようにするために、ジェネリック メソッド パラメータを使用できます。メソッドが特定のプロパティを持つ型を必要とする場合、インターフェイスを使用できます。以下は、関数が ID プロパティを持つ型を受け入れる必要がある例です。

<code class="go">type MammalImpl struct {
    ID   int
    Name string
}

func (m MammalImpl) GetID() int {
    return m.ID
}

func (m MammalImpl) GetName() string {
    return m.Name
}

type HumanImpl struct {
    MammalImpl
    HairColor string
}

func (h HumanImpl) GetHairColor() string {
    return h.HairColor
}</code>

このコードでは、インターフェイスが、哺乳類 および 人間。これにより、両方のタイプを Count 関数で使用できるようになり、GetID メソッドを通じて間接的に ID プロパティにアクセスできるようになります。

<code class="go">func Count(ms []Mammal) *[]string {
   IDs := make([]string, len(ms))
   for i, m := range ms {
     IDs[i] = strconv.Itoa(m.GetID())
   }
   return &IDs
}</code>
汎用メソッドのパラメーターとインターフェイスを利用することで、この関数は

哺乳類人間 オブジェクトの両方のスライスを処理できるようになりました。

完全な動作コードは次のとおりです。

以上が汎用メソッドのパラメーターとインターフェイスを使用して、Golang で哺乳類オブジェクトと人間オブジェクトの両方のスライスを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。