如何列出如下:
{{1,2}, 3, {5, 6, 7}, 8, 9}
在Go中代表?我需要能够将嵌套的变量大小列表从主函数传递给Go中的函数。然后,通过访问列表的各个元素/子列表,将在函数内处理此列表。
请注意,列表的大小和子列表的大小是可变的。
答案 0 :(得分:2)
您有两个基本选择:
首先,你可以做一片切片:
a := [][]int{
[]int{1,2},
[]int{3},
[]int{5, 6, 7},
[]int{8},
[]int{9},
}
这不是你想要的,但它很接近。在这种情况下,单个项目表示为具有一个项目的切片。简单。
其次,您可以制作一个interface{}
切片,并使用类型开关来识别和解压缩每个索引:
b := []interface{}{
[]int{1,2},
3,
[]int{5, 6, 7},
8,
9,
}
使用起来要复杂得多,但也更接近你想要的。
从切片b
读取项目的示例:
// Note that things can get a lot more complicated if you have
// more types and/or you nest deeper than one level.
for _, iv := range b {
switch v := iv.(type) {
case []int:
// v is an int slice
case int:
// v is an int
default:
// This will probably be an error case.
}
}
我建议你坚持使用第一种方法,除非你有充分的理由不这样做。