Go 1.18 ジェネリックのインデックス作成制約
Go 1.18 でのジェネリックの導入により、開発者は特定のアルゴリズムを実装する機会が得られます。種類。一般的な要件の 1 つは、配列、スライス、マップ、文字列などのインデックス付けをサポートする型を使用することです。
インデックス可能な制約
型パラメーターをインデックス可能な型に制限するには、次の制約を共用体とともに使用することを検討してください:
type Indexable interface {
~[]byte | ~string
}
インデックス可能な制約の制限
上記の制約はバイトおよび文字列のインデックス付けには機能しますが、マップや配列などの他のインデックス可能な型での使用には制限があります。 :
代替アプローチ
これらの制限のため、インデックス作成をサポートする唯一の実用的な共用体は次のとおりです。 []バイト |弦。この共用体ではインデックス付け操作が可能ですが、コア型がないため範囲操作はサポートされません。
使用例
次の例は、インデックス可能制約の使用方法を示しています。
func GetAt[T Indexable](v T, i int) byte {
return v[i]
}
この関数はインデックス可能な値とインデックスを受け取り、指定されたインデックスのバイトを返します。
結論
Go 1.18 では、次の方法が提供されています。共用体を使用して型をインデックス可能な型に制約するには、その制約の制限により、限られた一連の使用例、つまりバイトとインデックスのインデックス付けでのみ実用的であることがわかります。文字列。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3