我想看看v
的类型是否为slice
。如果是这样,我希望检查它的长度。
var a = make(map[string]interface{})
a["a"] = 1
a["b"] = []string{"abc", "def"}
a["c"] = []int{1,2,3}
for k, v := range a {
if reflect.TypeOf(v).Kind() == reflect.Slice {
t.Log("Length of map", k, len(v)) // invalid argument v (type interface {}) for len
}
}
如果我知道它是切片,我如何检查切片的长度?
预期产出:
Length of map b 2
Length of map c 3
答案 0 :(得分:3)
v
仍为interface{}
,您无法将len()
应用于reflect.ValueOf(v).Len()
。您可以使用反射来获得xs, ys, zs
的长度。