Go 1.18 ジェネリックのインデックス制約
Go 1.18 でのジェネリックの導入により、開発者は特定のアルゴリズムを実装する機会が得られます。種類。一般的な要件の 1 つは、配列、スライス、マップ、文字列などのインデックス付けをサポートする型を使用することです。
インデックス可能な制約
型パラメーターをインデックス可能な型に制限するには
<code class="go">type Indexable interface { ~[]byte | ~string }</code>
インデックス可能な制約の制限
上記の制約はバイトと文字列のインデックス作成には機能しますが、次の制約があります。マップや配列などの他のインデックス可能な型で使用する場合:
代替アプローチ
これらの制限のため、インデックス作成をサポートする唯一の実用的な共用体は次のとおりです。 []バイト |弦。この共用体ではインデックス付け操作が可能ですが、コア型がないため範囲操作はサポートされません。
使用例
次の例は、Indexable 制約の使用方法を示しています。
<code class="go">func GetAt[T Indexable](v T, i int) byte { return v[i] }</code>
この関数はインデックス可能な値とインデックスを受け取り、指定されたインデックスのバイトを返します。
結論
Go 1.18 では次のことが可能です。共用体を使用して型をインデックス可能な型に制約する方法ですが、その制約の制限により、これは限られたユースケース、つまりバイトと文字列のインデックス付けでのみ実用的です。
以上がGo 1.18 ジェネリックでインデックス可能な型を効果的に制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。