golang检查切片的长度(如果它是切片贴图[string] interface {}

时间:2017-06-23 14:07:48

标签: go reflection slice

我想看看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

1 个答案:

答案 0 :(得分:3)

v仍为interface{},您无法将len()应用于reflect.ValueOf(v).Len()。您可以使用反射来获得xs, ys, zs的长度。