-4

我想将空接口转换为地图。为什么这不行?

// 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)
4

2 回答 2

3

您的函数返回 a map[string]map[string]uint,而不是 a stat。它们是go 类型系统中的不同类型。要么类型断言,map[string]map[string]uint要么在 Go 1.9 中,您可以创建一个别名:

statRaw, _ := q.Statistic()
type stat = map[string]map[string]uint
_, ok := statRaw.(stat)

https://play.golang.org/p/Xf1TPjSI3_

于 2017-09-01T19:41:56.497 回答
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)

见: https: //play.golang.org/p/_BpPqfHYgch

于 2019-08-23T17:32:11.950 回答