Golang将对象的元素复制到切片中

时间:2017-04-17 15:04:48

标签: arrays go slice

有没有更好的方法将函数应用于对象的字段,然后将结果复制到新的切片?更好的是,我的意思是比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])
....

1 个答案:

答案 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])
}