用 go 折叠 if 语句

问题描述 投票:0回答:1

我有这个:

  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
    }
  }

我无法确认这是否有效,或者它是否正在做它想要做的事情(它最初正在做的事情)。

go intellij-idea jetbrains-ide
1个回答
0
投票

假设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
是应用程序的最小值。

© www.soinside.com 2019 - 2024. All rights reserved.