我可以根据条件将项目添加到创建语句中的切片中吗?

我有一个创建切片的函数,如下所示:


func buildOptions(cfg *ServerConfig) []SomeType {


    return []SomeType{

        Option1,

        Option2,

        Option3,

    }

}

仅当满足特定条件时,我才需要将 Option3 添加到切片中。可以在同一个语句中使用某种立即 if 来完成吗?


我必须做这样的事情吗:


func buildOptions(cfg *ServerConfig) []SomeType {


    options:= []SomeType{

        Option1,

        Option2,

    }


    if addOption3==true{

       options = append(options, Option3)

    }

    return options

}


千巷猫影
浏览 120回答 1
1回答

红颜莎娜

不,您不能有条件地将列出的元素包含在复合文字中。if使用附加的and可能会更冗长append(),但发生的事情(你的代码做了什么)更加明显。您可以使用传递条件和所有元素的辅助函数来实现类似的效果,但这只会使代码更加混乱,并且性能会更差。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go