ジェネリック関数でのフィールドの存在の確認
Go では、特定のフィールドの値を受け入れるジェネリック関数を作成するのが難しい場合があります。以下の例に示すように、ジェネリックを使用すると、そのような制約を強制しようとする可能性があります:
package main import ( "fmt" ) func Print[T IDer](s T) { fmt.Print(s.ID) } func main() { Print(Person{3, "Test"}) } type IDer interface { ~struct{ ID int } } type Person struct { ID int Name string } type Store struct { ID int Domain string }
ただし、Go 1.18 のジェネリック実装には構造型のサポートがないため、このアプローチは失敗します。その結果、このメカニズムを利用して、渡された値に特定のフィールドが存在することを保証することはできません。
そのため、Go では、共用体を処理したりフィールドを確保したりするときに、共通のフィールドにアクセスするためのメソッドをインターフェイス内に定義する必要があります。ジェネリック関数に存在します。
以上がGo ジェネリックでフィールドの存在を保証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。