有没有更好的方法将函数应用于对象的字段,然后将结果复制到新的切片?更好的是,我的意思是比for循环更好。
var tmp []string
for _, value := range some_object.some_field {
tmp = append(tmp, do_something(value))
}
类似的东西:
tmp := map_copy(do_something(some_object.some_field))
结果切片为:
tmp[0] = do_something(some_object.some_value[0])
tmp[1] = do_something(some_object.some_value[1])
tmp[2] = do_something(some_object.some_value[2])
....
答案 0 :(得分:5)
您可以添加的唯一性能提升是提前分配正确的切片容量。
您仍然可以通过从0长度切片开始添加附加值:
tmp := make([]string, 0, len(some_object.some_field))
for _, value := range some_object.some_field {
tmp = append(tmp, do_something(value))
}
或直接索引切片:
tmp := make([]string, len(some_object.some_field))
for i := range some_object.some_field {
tmp[i] = do_something(some_object.some_field[i])
}