【发布时间】:2021-09-08 15:23:37
【问题描述】:
我有以下用 Golang 编写的代码:
package main
import (
"fmt"
"reflect"
)
func main() {
var i []interface{}
var j []interface{}
var k []interface{}
i = append(i, 1)
i = append(i, "Test")
j = append(j, 2)
j = append(j, "Try")
k = append(k, i)
k = append(k, j)
for _, outer := range k {
fmt.Println(reflect.TypeOf(outer))
//for _, inner := range outer {
// fmt.Println(inner)
//}
}
}
这段代码的输出表明outer是一个类型:
[]interface{}
[]interface{}
但是,当我尝试迭代外部时,它给了我错误:
cannot range over outer (type interface {})
如何从嵌套的接口列表中检索值?任何帮助将不胜感激。
【问题讨论】:
-
使用类型断言:
outer.([]interface{})从interface{}值中获取切片,您可以对其进行迭代。 -
感谢@icza 的帮助。我现在可以遍历接口列表了。
-
旁注:如果您知道
k将包含切片,您应该考虑将其更改为类型[][]interface{},那么您不需要类型断言。
标签: go