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 サイトの他の関連記事を参照してください。