我可以根据条件向创建语句中的切片添加项目吗?
Can I add items to a slice in the creation statement depending on a condition?
我有创建像这样的切片的函数:
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
}
不,您不能有条件地包含 composite literal 中列出的元素。
使用额外的 if
和 append()
可能会更冗长,但会发生什么(您的代码做了什么)更加明显。
您可以使用传递条件和所有元素的辅助函数来实现类似的目的,但这只会使代码更加混乱并且性能会更差。
我有创建像这样的切片的函数:
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
}
不,您不能有条件地包含 composite literal 中列出的元素。
使用额外的 if
和 append()
可能会更冗长,但会发生什么(您的代码做了什么)更加明显。
您可以使用传递条件和所有元素的辅助函数来实现类似的目的,但这只会使代码更加混乱并且性能会更差。