我用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 {})
如何从嵌套的接口列表中检索值?如有任何帮助,我们将不胜感激。
为了从嵌套接口中检索值,您可以在将其转换为切片后对其进行迭代。我重新创建你的程序如下:
package main
import (
"fmt"
)
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(outer.([]interface{}))
for z := 0; z < len(outer.([]interface{})); z++ {
fmt.Println(outer.([]interface{})[z])
}
}
}
输出:
[1 Test]
1
Test
[2 Try]
2
Try