我有这个:
i := 0
for _, key := range keys {
i++
if i > min {
break
}
var inf = val.MapIndex(key)
if inf.IsValid() && inf.CanInterface() {
z.Val[key] = getInspectableVal(inf.Interface(), 0)
} else {
z.Val[key] = nil
}
}
作为一个天生不满意的人,我尝试了这个:
i := 0
for _, key := range keys {
if i++; i > min {
break
}
var inf = val.MapIndex(key)
if inf.IsValid() && inf.CanInterface() {
z.Val[key] = getInspectableVal(inf.Interface(), 0)
} else {
z.Val[key] = nil
}
}
我无法确认这是否有效,或者它是否正在做它想要做的事情(它最初正在做的事情)。
假设keys是一个切片,可以使用以下代码:
for _, key := range keys[:min(len(keys), minimum)] {
var inf = val.MapIndex(key)
if inf.IsValid() && inf.CanInterface() {
z.Val[key] = getInspectableVal(inf.Interface(), 0)
} else {
z.Val[key] = nil
}
}
其中
min
是内置函数,minimum
是应用程序的最小值。