刚开始编写 Go 代码,我遇到了一个有趣的问题。
有没有一种方法可以轻松地迭代作为空接口引入的数组中的项目而无需重复代码?考虑以下:
function(someArr interface{}){
switch someArr.(type){
case []int :
arr := (someArr).([]int)
for i := range (arr) {
// CODE
}
case []string :
arr := (someArr).([]string)
for i := range (arr) {
// CODE
}
}
}
在本例中,CODE 中的代码完全相同。但是,我不能将它从开关中取出,因为类型断言 arr 会超出范围。同样,我不能在 switch 之前定义 arr 因为我不知道它会是什么类型。这可能是做不到的。在那种情况下,当我使用不规则模式(一些整数数组、一些数组或字符串)解析 JSON 时,这种事情有什么更好的习惯用法?