Могу ли я добавить элементы в срез в операторе создания в зависимости от условия?
У меня есть функция, которая создает срез, как это:
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()
, но гораздо более очевидно, что происходит (что делает ваш код).
Вы могли бы достичь чего-то подобного, используя вспомогательную функцию, передающую условие и все элементы, но это только запутывает код больше и будет иметь худшую производительность.