登录
首页 >  Golang >  Go问答

在golang中对范围循环中的数值进行筛选

来源:stackoverflow

时间:2024-03-13 12:48:28 416浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《在golang中对范围循环中的数值进行筛选》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我有以下运行正常的代码,我在 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 值并打印到所有内容。
  2. 如果 mdl 包含 value ,则仅当 mod.name == mdl[i] 时才打印,否则不打印。

是否有一种更干净的方法来在golang中进行这种循环过滤?


解决方案


检查您在函数中传递的切片的长度,如果切片为空,则长度为零。

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

本篇关于《在golang中对范围循环中的数值进行筛选》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>