go - 将零 int 断言为 int32
问题描述
我注意到 Go 断言不像我期望的那样对零 int 起作用。这是代码:
var i interface{}
i = 0
i32, ok := i.(int32)
fmt.Println(ok)
fmt.Println(i32)
输出如下:
false
0
我找不到这种行为的解释。它是一个错误吗?
解决方案
i
不包含int32
,它包含int
,因此类型断言失败。
将文字值直接分配给interface{}
类似这样的值或在简短的变量声明中使用一个值可能会有点令人困惑,因为您并没有真正看到您得到的值类型;您需要了解常量“默认类型”的规则。如果这给您带来麻烦,您可以将其显式转换为一个类型,例如
i = int32(0)
,这将确保它i
确实包含一个int32
.
推荐阅读
- python-3.x - 如何使用 Numpy .tobytes() 序列化对象
- java - 如何检索 GPO 设置
- python - CSV To headers 和 Exploding results into custom class
- python - 如何将变量设置的范围内的所有数字相加?
- ibm-midrange - JT400向队列发送消息(即SNDMSG)
- python - 如何仅使用内存从从 Internet 下载的存档中提取特定文件
- javascript - 错误或我在 inboxsdk“提交”事件中出错
- python - python简单的loop_.join函数
- node.js - 为什么grpc使用了错误的版本?
- c# - 使用 C# 从 MSSQL 动态创建类和可枚举对象