面试题答案
一键面试在Go语言中,当需要频繁向切片中追加大量元素时,为优化性能,应在定义切片时预分配足够的容量。因为每次切片容量不足时,Go会重新分配内存并复制数据,这会带来性能开销。
示例代码如下:
package main
import (
"fmt"
)
func main() {
// 预分配足够的容量,假设要追加1000个元素
var data []int
data = make([]int, 0, 1000)
for i := 0; i < 1000; i++ {
data = append(data, i)
}
fmt.Println(data)
}
上述代码中,通过make([]int, 0, 1000)
创建了一个初始长度为0,但容量为1000的切片data
,这样在后续循环追加元素时,只要追加元素的数量不超过预分配的容量,就不会发生重新分配内存和数据复制的操作,从而提升性能。