ホームページ > バックエンド開発 > Golang > Go で型エイリアスにキャストすると型アサーションが失敗するのはなぜですか?

Go で型エイリアスにキャストすると型アサーションが失敗するのはなぜですか?

Barbara Streisand
リリース: 2024-12-22 18:35:11
オリジナル
657 人が閲覧しました

Why Does Type Assertion Fail When Casting to a Type Alias in Go?

Go での型エイリアスへのキャスト

問題:

サンプル スニペットでは、最初のタイプのアサーションは、関数シグネチャを明示的に指定することで成功します。ただし、型エイリアス somethingFuncy にキャストしようとする 2 番目のアサーションはパニックになります。これはなぜそうなのでしょうか?また、より長い関数シグネチャにキャストする方法はありますか?

説明:

ここでは型キャストが関係しているという誤解に反して、 Go は型アサーションと型変換のみを提供します。焦点は、提供されたスニペットで使用されている型アサーションにあります。

型アサーションと変換の主な違いは、比較に使用される基準にあります。 int と MyInt を使用した例などの変換では、基になる型が考慮されます。ただし、型アサーションでは、正確な型のみが考慮されます。

詳しく説明すると、a が int 型である例では、int が MyInt と同一ではないため、アサーション a.(MyInt) は失敗します。どちらも同じ基礎となる型を共有している場合でも。

tl;dr:

Typeアサーションは正確な型の同一性をチェックします。つまり、somethingFuncy のような型エイリアスは func(int) bool とは異なります。したがって、2 番目のキャストは失敗します。

ボーナス:

スニペット内の型の同一性を検証するために使用されるコードは参考のために提供されており、アサーションに含まれる直接比較を示しています。プロセス。

以上がGo で型エイリアスにキャストすると型アサーションが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート