型アサーション メソッドの公開: .(data_type)
Go の世界では、謎めいた .(data_type) メソッドが多くの人を当惑させてきました。 、それは何をするのか、そしてその重要性は何なのかという質問を促します。それを解明する旅に出かけましょう。
提供したコード スニペットに示されているように:
b := "silly" reflect.TypeOf(b.(string)) // string reflect.TypeOf(b) // string
.(data_type) メソッド、この場合は b.(string) により、次のことが可能になります。インターフェース値 (b) を特定のデータ型 (この例では文字列) に変換します。{}これにより、値が実際に指定された型 (このインスタンスでは string など) であることがコンパイラに保証されます。
ただし、b.(string) は b の基になる値を変更しないことを覚えておくことが重要です。 。代わりに、指定された型の新しい値を抽出します。型アサーションの成功を検証するには、追加のブール変数を含めることができます。
s, ok := b.(string) // s is of type string if !ok { // b did not contain a value of type string! }
このアプローチでは、変換された値 (複数可) だけでなく、変換が成功したかどうか。
さらに明確にするために、型アサーションは明示的に「コンパイラに b が文字列であることを伝え」ません。むしろ、b から文字列値を動的に抽出し、b に異なる型が含まれている場合はエラーを発生させます。抽出された値は文字列として処理できるため、インターフェイス値に対して直接実行できないスライスなどの操作を実行できるようになります。
以上がGo の `.(data_type)` 型アサーション メソッドは何をしますか?またそれがなぜ重要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。