1.reflect.TypeOf(argument).Kind() == reflect.String

有一个interface{}类型的切片,输出其中所有string类型的值及其索引

1
2
3
4
5
6
sli := []interface{}{"1213", 3456, 7867, "hao", "city"}
for argNum, arg := range sli {
if reflect.TypeOf(arg).Kind() == reflect.String {
fmt.Printf("第%d个元素%s为string类型\n",argNum,arg)
}
}

输出为:

1
2
3
第0个元素1213为string类型
第3个元素hao为string类型
第4个元素city为string类型

如果直接reflect.TypeOf(arg).Kind() == "string",则会报错

1
mismatched type Kind and string

这么直接粗暴地写是不行滴~