我有以下可以正常运行的代码,我在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
分支以支持以下内容:
mdl
为空(可以没有任何值),则循环所有mStr值并打印到所有mStr值。mod.Name == mdl[I]
除外时打印。在Golang中是否有更清洁的方法来进行这种循环过滤?
答案 0 :(得分:0)
如果切片为空,请检查要传递给函数的切片的长度,该长度将为零。
if len(mdl) > 0 && mod.Name == mdl[i] {
fmt.Fprint(file, “app”)
fmt.Fprint(file, “app1”)
// code
}else{
// code
}