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

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

DDD
DDDオリジナル
2024-12-11 12:16:18858ブラウズ

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

Interface{} 値の Int への変換の型アサーション

interface{} 値の int への変換は、正しく実行されないとエラーが発生する可能性があります。この変換には型アサーションが必要です。

エラーの説明

エラー メッセージは、インターフェースの値を int に直接変換できないことを示しています。型アサーション。

コード検査

コード:

    val, ok := m["area_id"]
    if !ok {
        utility.CreateErrorResponse(w, "Error: Area ID is missing from submitted data.")
        return
    }

    fmt.Fprintf(w, "Type = %v", val)   // <--- Type = float64
    iAreaId := int(val)                // <--- Error on this line.

問題は次の行にあります:

    iAreaId := int(val)

解決策

値を直接変換する代わりに、次のことを行う必要があります。型アサーションを使用します。値を int に変換できるかどうかをチェックし、変換できない場合はエラーをスローします。これを行うには 2 つの方法があります。

// Panicking version
iAreaId := val.(int)

// Non-panicking version
iAreaId, ok := val.(int)
if !ok {
    // Handle the error case here
}

この変更を行うことで、interface{} 値を int に正常に変換し、コードの実行を続行できます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。