ホームページ > バックエンド開発 > Golang > Go の型アサーション `.(data_type)` はインターフェイス値から特定の型をどのように抽出しますか?

Go の型アサーション `.(data_type)` はインターフェイス値から特定の型をどのように抽出しますか?

Susan Sarandon
リリース: 2024-12-24 01:36:10
オリジナル
705 人が閲覧しました

How Does Go's Type Assertion `.(data_type)` Extract Specific Types from Interface Values?

Go の型アサーション: .(data_type) メソッド**

Go の .(data_type ) は、型アサーションとして知られており、インターフェイス値から特定の型を取得できるようにします。 「Effective Go」で説明したように、「指定された明示的な型の値をそこから抽出する」ことが必要です。

提供されたコードでは、b が割り当てられているため、reflect.TypeOf(b) は「interface{}」を返します。文字列型のインターフェース値「silly」。ただし、型アサーションは b に文字列値が含まれていることを明示的に示しているため、reflect.TypeOf(b.(string)) は「string」を返します。

型アサーションは、インターフェイスから特定の型を抽出するために実行時に使用されます。これらは、値の新しいコピーを作成するのではなく、基になる値の型にアクセスするという点で型変換とは異なります。

b.(string) の場合、アサーションは文字列値を返します。これにより、文字列のスライスや長さの確認など、文字列に固有の操作が可能になります。さらに、型なしのブール値を割り当てることで、型アサーションの成功をテストできます。

s, ok := b.(string) // s is of type string
if !ok {
    // b did not contain a value of type string!
}
ログイン後にコピー

さらに明確にするために、型アサーションは「b が文字列であることを Go に伝えません」。代わりに、実行時に b から文字列値を抽出しようとします。その結果、b に異なる型が含まれている場合はパニックが発生します (オプションのブール値が割り当てられている場合を除く)。アサーションの結果の値は指定されたデータ型を持ち、その特定の操作とプロパティへのアクセスが許可されます。

以上がGo の型アサーション `.(data_type)` はインターフェイス値から特定の型をどのように抽出しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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