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

时间:2019-06-20 09:16:03

标签: go slice composite-literals

我有创建像这样的切片的功能:

state: {
   selections { 
       products: ["a", "b"]
   }
}

仅当满足特定条件时,才需要将Option3添加到切片中。如果在同一条语句中,可以立即执行吗?

我必须要做这样的事情:

func buildOptions(cfg *ServerConfig) []SomeType {

    return []SomeType{
        Option1,
        Option2,
        Option3,
    }
}

1 个答案:

答案 0 :(得分:4)

不,您不能在composite literal中有条件地包含列出的元素。

使用附加的ifappend()可能会更加冗长,但是会发生什么事情(您的代码会做什么)更加明显。

您可以使用传递条件和所有元素的辅助函数来实现类似的功能,但这只会使代码更加混乱,从而降低性能。