Могу ли я добавить элементы в срез в операторе создания в зависимости от условия?

У меня есть функция, которая создает срез, как это:

func buildOptions(cfg *ServerConfig) []SomeType {

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

Мне нужно, чтобы Option3 был добавлен в срез, только если соблюдено определенное условие. Может ли это быть сделано с какой-то немедленной, если в том же заявлении?

Должен ли я сделать что-то вроде этого:

func buildOptions(cfg *ServerConfig) []SomeType {

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

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

1 ответ

Решение

Нет, у вас не может быть условного включения перечисленных элементов в составной литерал.

И это может быть более многословным, используя дополнительный if а также append(), но гораздо более очевидно, что происходит (что делает ваш код).

Вы могли бы достичь чего-то подобного, используя вспомогательную функцию, передающую условие и все элементы, но это только запутывает код больше и будет иметь худшую производительность.

Другие вопросы по тегам