ホームページ  >  記事  >  バックエンド開発  >  Go でジェネリック メソッド パラメーターを使用して、ID プロパティを持つ任意の型で Count 関数を機能させるにはどうすればよいですか?

Go でジェネリック メソッド パラメーターを使用して、ID プロパティを持つ任意の型で Count 関数を機能させるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 15:01:02915ブラウズ

How can I use generic method parameters in Go to make a Count function work with any type that has an ID property?

Go でのジェネリック メソッド パラメーターの使用

Go ジェネリックは、さまざまなデータ型を処理できるメソッドとデータ構造を柔軟に定義できます。この特定のインスタンスでは、当面のタスクは、ID プロパティを持つ任意の型を受け入れるように Count 関数を変更することです。

インターフェイス ベースのソリューション

インターフェイス ベースソリューションでは、動作を具体的なタイプから分離できます。インターフェイスを利用することで、さまざまなデータ型間の共通の機能を抽象化できます。

<code class="go">type IDed interface {
  GetID() int
}</code>

このインターフェイスは、整数を返す単一のメソッド GetID を定義します。さまざまな型でこのインターフェイスを実装でき、Count 関数がインターフェイスを満たす任意の型で動作できるようになります。

ImplStruct 実装

これを実装するには、2 番目の型を定義します。 、ImplStruct。ID 付きインターフェイスが埋め込まれます。この型には、GetID メソッドと追加の Name フィールドが含まれています。

<code class="go">type ImplStruct struct {
  IDed
  Name string
}</code>

Modified Count Function

Count 関数は、ID 付きインターフェイスを実装する任意の型を受け入れることができるようになりました。これは、哺乳類型と人間型の両方で動作できることを意味します。

<code class="go">func Count(data []IDed) []string {
  ids := make([]string, len(data))
  for i, m := range data {
    ids[i] = strconv.Itoa(m.GetID())
  }
  return ids
}</code>

使用法

修正された Count 関数と ImplStruct 型を使用して、ID をカウントできるようになりました。

<code class="go">mammals := []ImplStruct{
  ImplStruct{ID: 1, Name: "Carnivorious"},
  ImplStruct{ID: 2, Name: "Ominivorious"},
}

humans := []ImplStruct{
  ImplStruct{ID: 1, Name: "Peter"},
  ImplStruct{ID: 2, Name: "Paul"},
}

fmt.Println(Count(mammals))
fmt.Println(Count(humans))</code>

結論

この改良されたコードでは、抽象 ID インターフェイスと埋め込み ImplStruct により、Count 関数が任意の型で動作できるようになります。 GetID メソッドを実装します。このアプローチにより、共通の機能でさまざまなデータ型を処理する際の柔軟性とモジュール性が実現します。

以上がGo でジェネリック メソッド パラメーターを使用して、ID プロパティを持つ任意の型で Count 関数を機能させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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