Go での型エイリアスへのキャスト
Go で型エイリアスにキャストする場合、キャストの代わりに型アサーションが使用されます。ただし、型アサーションの動作は型変換の動作とは異なります。
型変換
型変換は、値が異なる型の変数に格納されると自動的に行われます。 。たとえば、int を float64 変数に割り当てると、型変換が行われます。
型アサーション
型アサーションは、値がインターフェイス変数に格納されているかどうかを明示的にチェックします。{}特定のタイプのものです。これらは a.(T) の形式をとり、a は変数、T はターゲットの型です。
型エイリアスへのキャストに関する問題
に示すように、提供されたプレイグラウンド スニペットで、インターフェイス変数を型エイリアス(somethingFuncy)にキャストしようとすると、パニックが発生します。{}これは、型アサーションでは、値の動的型がターゲット型と同一である必要があるためです。
説明
Go では、型の同一性は、次のような 2 つの名前付き型を指します。同じ型名であり、同じ TypeSpec に由来します。型エイリアスは実質的に名前付き型であるため、同一であるとみなされるには、型名と宣言がまったく同じである必要があります。
結論
型を使用した Go での型エイリアスへのキャストエイリアスの型はターゲットの型と同一である必要があるため、アサーションは不可能です。まったく同じ名前の型のみをアサートできます。
以上がGo で型エイリアスにキャストすると型アサーションが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。