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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-24 17:16:16590浏览

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

在 Go 中将 interface{} 转换为 int

从 JSON 获取数据并尝试将其转换为整数时,可能会遇到错误,指出无法转换int 的接口{}。此错误是由于 Go 的类型断言规则而发生的。

在您的代码中,您有以下行:

iAreaId := int(val)

此行尝试转换具有类型 interface{ 的 val },使用类型转换转换为 int。但是,不允许将 interface{} 类型转换为 int。

要解决此问题,您需要使用类型断言:

iAreaId := val.(int)

类型断言提取底层来自接口{}的值(如果它具有声明的类型)。如果该值没有声明的类型,则类型断言将发生恐慌。

或者,您可以使用第二个返回值来使用类型断言的非恐慌版本:

iAreaId, ok := val.(int)

如果类型断言成功,则 ok 变量将为 true;如果类型断言不成功,则 ok 变量将为 false。

通过正确使用类型断言,您可以在 Go 中成功将 interface{} 转换为 int。

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

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