go - 将零 int 断言为 int32

标签 go

我注意到对于零整数,Go 断言并不像我预期的那样有效。这是代码:

var i interface{}
i = 0
i32, ok := i.(int32)
fmt.Println(ok)
fmt.Println(i32)

输出如下:

false
0

我找不到对此行为的解释。是错误吗?

最佳答案

i 不包含 int32,它包含 int,因此类型断言失败。

像这样将字面量值直接分配给 interface{} 或在简短的变量声明中使用一个字面量值可能会有点困惑,因为您无法真正看到获得的值类型;你需要知道 "default type" 的规则一个常数。如果这给您带来麻烦,您可以将其显式转换为一种类型,例如 i = int32(0),这将确保 i 实际上包含 int32

关于go - 将零 int 断言为 int32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58072244/

相关文章:

mongodb - 使用 golang 和 mgo,如何在 MongoDB 中搜索一系列值?

c++ - 是在 C 或 C++ 析构函数中模拟 GO 语言延迟的实用方法吗?

postgresql - 关于带变量的 Go sql 查询,我没有得到什么?

json - golang 将接口(interface)数组转换为字符串

go - Redis `TIME` 集群模式命令

go - 我有一个在 Kubernetes 上运行的 Golang 应用程序,但是当 pod 死亡时根本没有错误消息。我应该怎么办?

docker - 在 Docker 中从 Github 运行 go 文件

c - 为什么 Golang 比 ANSI C 快,我该如何优化我的解决方案?

dictionary - 从 Go 中的映射条目创建平面数组

go - 使用 Select Widget 时我是如何做到 panic 的