如何在Golang中迭代嵌套的接口列表



我用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

最新更新