Go インターフェイスは型安全性とコードの柔軟性を提供しますが、その使用法には特定の制限が適用されます。開発者が遭遇する一般的な問題の 1 つは、型要素を持つインターフェイスを使用しようとしたときに、「インターフェイスに型制約が含まれています: 変換でインターフェイスを使用できません」というエラーです。
型制約とは、インターフェイスを実装できる値のタイプに課される制限。 Go では、基本的なインターフェイス (メソッドのみを含むインターフェイス) のみが型パラメーターまたは他のインターフェイスのコンポーネントとして許可されます。同等の型または他の非基本インターフェイスが埋め込まれているインターフェイスは、それ自体が非基本であるとみなされます。
提供されたコードは、int、int64、そしてfloat64型。 Number は型制約により非基本であるため、型変換やスライス要素型として使用できません。
型制約のあるインターフェイス直接使用することはできませんが、ジェネリック型または関数を実装できる型を制限するなど、本来の目的には引き続き利用できます。たとえば、次のコードは型制約を使用して汎用の構造体と関数を定義しています。
type Coordinates[T Number] struct { x, y T // T must be a type that satisfies the Number interface } func sum[T Number](a, b T) T { // T must be a type that satisfies the Number interface return a + b }
Go では、インターフェイスの制限、特に型制約に関係する制限を理解することが重要です。効果的なコード開発。非基本インターフェイスは、直接型変換やスライス要素型として使用できないことに留意すると、エラーを防止し、コードの整合性を確保できます。
以上がGo の型変換で型制約のあるインターフェイスを使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。