我想创建一个函数,它可以接受映射或任何其他数组,并遍历它调用每个项目上的函数,该函数知道如何处理遇到的任何类型。遍历接口
这是我第一次失败的尝试。目前,当我在我的真实使用案例中运行它时,它总是说“呃哦!”。
func DoTheThingToAllTheThings(data_interface interface{}) int {
var numThings int
switch data := data_interface.(type) {
case map[interface{}]interface{}:
numThings = len(data)
for index, item := range data {
DoTheThing(index, item)
}
case []interface{}:
numThings = len(data)
for index, item := range data {
DoTheThing(index, item)
}
default:
fmt.Println("uh oh!")
}
return numThings
}
数组或地图可以包含很多不同的东西,所以它不是尝试所有可能的输入匹配的选项。
另有说明,有没有办法在Go中迭代数组或地图而不知道它是什么?
下面的“基于反射”的解决方案将起作用,但是地道的东西只是在可能的情况下在callsite处写出循环。 – twotwotwo 2014-09-13 22:00:46