Go 1.18 でのジェネリックの導入により、開発者は型制約を使用して型を定義し、特定の型のみが許可されるようにすることができます。この柔軟性は、インデックスをサポートする型に依存するアルゴリズムを実装する場合に非常に重要になります。
インデックス メソッドを使用して型を制約できますか?
インデックスを使用して型を制約するには、次のことを考慮するとよいでしょう。インデックス可能プロパティを使用します。ただし、作成できる唯一の意味のある制約は、type Indexable interface { ~[]byte | です。 ~文字列 }。この制約は、型をバイト スライスと文字列に制限します。
共用体制約が制限されるのはなぜですか?
共用体制約型で許可される操作は、によってサポートされる操作に制限されます。制約セット内のすべてのタイプ。インデックス作成をサポートするには、共用体の型は同一のキーと要素の型を持つ必要があります。
さらに、共用体のマップ型は同一のキーの型を持つ必要があります。また、配列の場合、その長さは型の一部であるため、すべての可能な長さに対して共用体を定義することは非現実的です。
インデックス付けの実際的な実装
したがって、インデックス付け要件を満たす共用体は []byte | です。弦。 byte は uint8 のエイリアスであるため、この制約で []uint8 を使用することもできます。
インデックス作成のための共用体制約の制限
一方、共用体制約 []byte | string はインデックス付けをサポートしますが、範囲はサポートしません。これは、共用体にコア型がないためです。
結論として、Go ジェネリックスでインデックスをサポートする型への制約は、特定の制約型に限定されます。 ~文字列 }。これ以外に、すべてのインデックス可能な型を包含する制約を定義する代替方法はありません。
以上がGo 1.18 ジェネリックでインデックスをサポートするように型を制約できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。