Go 我可以根据条件向creation语句中的切片添加项吗?

Go 我可以根据条件向creation语句中的切片添加项吗?,go,slice,composite-literals,Go,Slice,Composite Literals,我有一个函数,可以创建如下切片: func buildOptions(cfg *ServerConfig) []SomeType { return []SomeType{ Option1, Option2, Option3, } } 只有在满足特定条件时,我才需要将选项3添加到切片中。如果在同一个语句中,可以用某种立即的if来完成吗 当然,我必须这样做: func buildOptions(cfg *ServerConfig)

我有一个函数,可以创建如下切片:

func buildOptions(cfg *ServerConfig) []SomeType {

    return []SomeType{
        Option1,
        Option2,
        Option3,
    }
}
只有在满足特定条件时,我才需要将选项3添加到切片中。如果在同一个语句中,可以用某种立即的if来完成吗

当然,我必须这样做:

func buildOptions(cfg *ServerConfig) []SomeType {

    options:= []SomeType{
        Option1,
        Option2,
    }

    if addOption3==true{
       options = append(options, Option3)
    }
    return options
}

不,不能在列表中有条件地包含列出的元素

如果使用附加的
if
append()
,可能会更加冗长,但是发生的事情(代码所做的事情)要明显得多


您可以使用一个传递条件和所有元素的helper函数来实现类似的功能,但这只会使代码更加模糊,性能会更差。

不,您不能将列出的元素有条件地包含在列表中

如果使用附加的
if
append()
,可能会更加冗长,但是发生的事情(代码所做的事情)要明显得多


您可以使用一个传递条件和所有元素的helper函数来实现类似的功能,但这只会使代码更加模糊,性能会更差。

在初始化表达式中无法实现
append
是执行此操作的方法。“如果在同一语句中,是否可以使用某种立即数?”否。不能在初始化表达式中执行此操作
append
是一种方法。“如果在同一个语句中,是否可以使用某种类型的立即命令?”不。@FunkSoulBrother-One可能会对此提出争议。为什么要列出一个不想添加的值?这是混淆。追求简单。添加一些人认为有用的各种特性,你就会得到今天的Java。@FunkSoulBrother对此可能会有争议。为什么要列出一个不想添加的值?这是混淆。追求简单。添加一些人认为有用的各种特性,您将得到今天的Java。