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

Arrays Golang将对象的元素复制到切片,arrays,go,slice,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(

有没有更好的方法将函数应用于对象的字段,然后将结果复制到新切片?我说的更好是指比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的切片开始,使用append添加值:

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

您可以添加的唯一性能提升是提前分配正确的片容量

您仍然可以从长度为0的切片开始,使用append添加值:

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

map\u copy
只是一个包含for循环的函数。我不知道你在问什么,我可以自己写。它更多地针对性能方面。也许有一些花式的内部循环,我不知道哪一个比for循环处理得更好。抱歉,如果不清楚的话。不完全与这个特定的问题相关,但是wiki上有一系列的切片技巧,它们公开了一些简单的优化,比如使用省略号追加。在这里阅读
map\u copy
将只是一个包含for循环的函数。我不知道你在问什么,我可以自己写。它更多地针对性能方面。也许有一些花式的内部循环,我不知道哪一个比for循环处理得更好。抱歉,如果不清楚的话。不完全与这个特定的问题相关,但是wiki上有一系列的切片技巧,它们公开了一些简单的优化,比如使用省略号追加。读这里