Могу ли я добавить элементы в срез в операторе создания в зависимости от условия? - PullRequest
1 голос
/ 20 июня 2019

У меня есть функция, которая создает фрагмент следующим образом:

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 Ответ

4 голосов
/ 20 июня 2019

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

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

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

...