Go アプリケーションを開発する場合、インターフェイス タイプの制約によって課される制限を理解することが不可欠です。共用体などの型要素を含むインターフェイス型は、その使用が制限されています。この記事では、インターフェイスの型制約の詳細を詳しく掘り下げ、その影響を説明する例を示します。
Go では、共用体などの型要素を含むインターフェイスが考慮されます。非基本的。これは、変数の型として使用したり、他の非インターフェイス型のコンポーネントとして使用したりできないことを意味します。たとえば、次の Number インターフェイスは共用体を含むため非基本的です:
type Number interface { int | int64 | float64 }
次のように Number インターフェイスのスライスを初期化しようとすると:
a := []Number{Number(1), Number(2), Number(3), Number(4)}
Go は、Number インターフェイスを型変換に使用できないため、「インターフェイスに型制約が含まれています」というエラーを発生させます (Number( で見られるように) 1)).
Go 言語仕様に従って、基本的ではないインターフェイスは型制約として、または制約として使用される他のインターフェイスの要素としてのみ使用できます。値や変数の型を指定することはできません。これは、インターフェイス内に type 要素が存在するとインターフェイスが非基本になり、直接インスタンス化と互換性がなくなるためです。
非基本インターフェイスは使用できません型として直接使用することができ、型制約として使用できます。たとえば、Number インターフェイスによって制約されたジェネリック型パラメーター T を使用する次の Co座標構造体について考えてみましょう。 x、yT }
type Coordinates[T Number] struct { x, y T }
結論
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3