有没有更好的方法将函数应用于对象的字段,然后将结果复制到新的切片?更好的我的意思是比for循环具有更好的性能.
var tmp []string
for _, value := range some_object.some_field {
tmp = append(tmp, do_something(value))
}
Run Code Online (Sandbox Code Playgroud)
就像是:
tmp := map_copy(do_something(some_object.some_field))
Run Code Online (Sandbox Code Playgroud)
生成的切片为:
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])
....
Run Code Online (Sandbox Code Playgroud)
您可以添加的唯一性能增加是提前分配正确的切片容量.
您仍然可以通过从0长度切片开始添加附加值:
tmp := make([]string, 0, len(some_object.some_field))
for _, value := range some_object.some_field {
tmp = append(tmp, do_something(value))
}
Run Code Online (Sandbox Code Playgroud)
或者直接索引切片:
tmp := make([]string, len(some_object.some_field))
for i := range some_object.some_field {
tmp[i] = do_something(some_object.some_field[i])
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
816 次 |
| 最近记录: |