【发布时间】:2020-01-22 02:44:09
【问题描述】:
地图上的类型断言不起作用,这是正确的做法吗?
详细说明一下,我的目标是返回一个动态类型的地图。此示例仅用于演示。
package main
import "fmt"
func main() {
m := hello().(map[string]int)
fmt.Println(m)
}
func hello() interface{} {
return map[string]interface{} {
"foo": 2,
"bar": 3,
}
}
它恐慌
panic:接口转换:interface {} 是 map[string]interface {}, 不是 map[string]int
【问题讨论】:
-
有什么问题吗?
map[string]interface{}不是map[string]int所以类型断言失败。 -
我是否可以假设地图的键为字符串,值为 int?使用其他类型的类型断言,然后 map 适用于这些假设
-
您不能对不兼容的类型进行类型断言。您必须手动转换它。
标签: go