「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go で型制約のあるインターフェイスを直接使用できないのはなぜですか?

Go で型制約のあるインターフェイスを直接使用できないのはなぜですか?

2024 年 11 月 19 日に公開
ブラウズ:744

Why Can't I Use Interfaces with Type Constraints Directly in Go?

インターフェイス タイプの制約

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
}

結論

型制約のあるインターフェイス型は、次のような場合に重要な役割を果たします。 Go アプリケーションでの型の安全性を確保します。非基本インターフェイスの制限を理解し、型制約内でそれらを正しく利用することで、開発者は堅牢で効率的なコードを作成できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3