英文:
golang check length of a slice if it is a slice map[string]interface{}
问题
我想查看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
}
}
现在我知道它是一个slice
,我该如何检查它的长度?
期望的输出:
Length of map b 2
Length of map c 3
英文:
I want to see if the type of v
is a slice
. If so, I wish to check the length of it.
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
}
}
How do I check the length of my slice, now that I know it is a slice?
Expected output:
Length of map b 2
Length of map c 3
答案1
得分: 4
v
仍然是一个interface{}
类型,你不能对其应用len()
函数。你可以使用反射来获取长度,使用reflect.ValueOf(v).Len()
。
英文:
v
is still a interface{}
, which you cannot apply len()
to. You can use reflection to get the length with reflect.ValueOf(v).Len()
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论