我想将空接口转换为map。为什么这不行?
// q tarantool.Queue (https://github.com/tarantool/go-tarantool)
statRaw, _ := q.Statistic() // interface{}; map[tasks:map[taken:0 buried:0 ...] calls:map[put:1 delay:0 ...]]
type stat map[string]map[string]uint
_, ok := statRaw.(stat)
答案 0 :(得分:3)
您的函数返回map[string]map[string]uint
,而不是stat
。它们是go的类型系统中的不同类型。键入断言为map[string]map[string]uint
,或者在Go 1.9中,您可以创建别名:
statRaw, _ := q.Statistic()
type stat = map[string]map[string]uint
_, ok := statRaw.(stat)
答案 1 :(得分:0)
不要为这种事情使用类型别名。
首先进行类型检查,然后进行转换:
statRaw, _ := q.Statistic()
raw, ok := statRaw.(map[string]map[string]uint)
if !ok {
return
}
type stat map[string]map[string]uint
my := stat(raw)