Go でインターフェイス{}を int に変換する
Go コードはインターフェイス{} 値を int に直接変換しようとしますが、型の制約により変換が失敗します。エラー メッセージは、この変換には型アサーションが必要であることを示しています。
問題とその解決策を理解しましょう:
問題:
提供されたコードでは、変数 val の型はインターフェイス{}です。これは、任意の型の値を保持できることを意味します。割り当て iAreaId := int(val) は、interface{} 値を int に変換しようとします。{}ただし、この直接変換は Go では許可されていません。
解決策:
インターフェース値を特定の型に適切に変換するには、型アサーションが必要です。{}型アサーションは、値を特定の型に変換することをコンパイラに明示的に示します。
val を int としてアサートするには、次の構文のいずれかを使用します。
パニックを起こしやすい:
iAreaId := val.(int)
の場合val を int に変換することはできません。このアプローチではパニックが発生します。
非パニック:
iAreaId, ok := val.(int)
このアプローチでは、変換されたオブジェクトに iAreaId が割り当てられます。 value と ok は、変換が成功したかどうかを示すブール値に変換されます。変換が失敗した場合、ok は false になります。
変換ルールの理解:
interface{} から特定の型への直接変換は次のとおりです。 Go 言語の仕様に従って許可されていません。これらのルールをオーバーライドし、値を目的の型に明示的にキャストするには、型アサーションが必要です。
以上がGo でインターフェイスを int に安全に変換するにはどうすればよいですか?{}の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。