首页 >后端开发 >Golang >如何在 Go 中安全地将 interface{} 值转换为 int?

如何在 Go 中安全地将 interface{} 值转换为 int?

DDD
DDD原创
2024-12-11 12:16:18866浏览

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

Interface{} 值转换为 Int 的类型断言

如果执行不正确,将 interface{} 值转换为 int 可能会导致错误。此转换需要类型断言。

错误说明

错误消息表明您无法将interface{}值直接转换为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,如果不能则抛出错误。有两种方法可以实现此目的:

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

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

通过进行此更改,您可以成功将 interface{} 值转换为 int 并继续执行代码。

以上是如何在 Go 中安全地将 interface{} 值转换为 int?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn