在golnag中的范围循环中过滤值

时间:2018-08-08 11:06:58

标签: go

我有以下可以正常运行的代码,我在mStr上循环并打印 赋予文件价值

func setFile(file io.Writer, mStr []*mod.M, mdl []string) {

    for i, mod := range mStr {
            fmt.Fprint(file, “app”)
            fmt.Fprint(file, “app1”)
                        …

    }
}

现在我需要在范围上提供一个过滤器, 例如如果mod.Name ==“ app”

仅打印到文件
func setFile(file io.Writer, mStr []*mod.M, mdl []string) {

    for i, mod := range mStr {

    if mod.Name == mdl[i] {
            fmt.Fprint(file, “app”)
            fmt.Fprint(file, “app1”)
                        …

    }
  }
}

虽然这可行,但它在代码中引入了几个if else分支以支持以下内容:

  1. 如果mdl(可以没有任何值),则循环所有mStr值并打印到所有mStr值。
  2. 如果mdl包含value,则仅在mod.Name == mdl[I]除外时打印。

在Golang中是否有更清洁的方法来进行这种循环过滤?

1 个答案:

答案 0 :(得分:0)

如果切片为空,请检查要传递给函数的切片的长度,该长度将为零。

if len(mdl) > 0 && mod.Name == mdl[i] {
        fmt.Fprint(file, “app”)
        fmt.Fprint(file, “app1”)
        // code
}else{
     // code
}