ホームページ > バックエンド開発 > Golang > Go でインターフェイスを int に安全に変換するにはどうすればよいですか?{}

Go でインターフェイスを int に安全に変換するにはどうすればよいですか?{}

Mary-Kate Olsen
リリース: 2024-12-15 08:06:17
オリジナル
987 人が閲覧しました

How to Safely Convert an interface{} to an int in Go?

Go でインターフェイス{}を int に変換する

Go コードはインターフェイス{} 値を int に直接変換しようとしますが、型の制約により変換が失敗します。エラー メッセージは、この変換には型アサーションが必要であることを示しています。

問題とその解決策を理解しましょう:

問題:

提供されたコードでは、変数 val の型はインターフェイス{}です。これは、任意の型の値を保持できることを意味します。割り当て iAreaId := int(val) は、interface{} 値を int に変換しようとします。{}ただし、この直接変換は Go では許可されていません。

解決策:

インターフェース値を特定の型に適切に変換するには、型アサーションが必要です。{}型アサーションは、値を特定の型に変換することをコンパイラに明示的に示します。

val を int としてアサートするには、次の構文のいずれかを使用します。

  1. パニックを起こしやすい:

    iAreaId := val.(int)
    ログイン後にコピー

    の場合val を int に変換することはできません。このアプローチではパニックが発生します。

  2. 非パニック:

    iAreaId, ok := val.(int)
    ログイン後にコピー

    このアプローチでは、変換されたオブジェクトに iAreaId が割り当てられます。 value と ok は、変換が成功したかどうかを示すブール値に変換されます。変換が失敗した場合、ok は false になります。

変換ルールの理解:

interface{} から特定の型への直接変換は次のとおりです。 Go 言語の仕様に従って許可されていません。これらのルールをオーバーライドし、値を目的の型に明示的にキャストするには、型アサーションが必要です。

以上がGo でインターフェイスを int に安全に変換するにはどうすればよいですか?{}の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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