インターフェイス メソッドの型パラメーター: Go ジェネリクスの難題
Go のジェネリックスの追求では、型の禁止という独特の障害が現れます。インターフェースメソッド定義内のパラメータ。キー/バリュー ストアを抽象化しようとする開発者がこの制限に遭遇すると、なぜ解決策が存在するのか、また解決策が存在するのか疑問に感じます。
制限の背後にある根拠
The Goコアチームは、いくつかのインターフェイスで型パラメータを禁止するという意図的な設計決定を下しました。理由:
制限の回避
制限はイライラするものですが、克服できないわけではありません。型パラメーターの提案で提案されている解決策は、型パラメーターをインターフェイスの型定義自体に移動することです。
type Reader[V Unmarshaler] interface { Read(bucket []byte, k ...[]byte) ([][]byte, error) ReadDoc(bucket []byte, factory func() (V, error), k ...[]byte) ([]V, error) } type Unmarshaler interface { UnmarshalKV(v []byte) error }
このアプローチにより、言語の設計制約を維持しながら、タイプセーフな汎用インターフェイスが可能になります。
以上がGo ジェネリクスはインターフェイス メソッド定義の型パラメータを処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。