MST

星途 面试题库

面试题:Go语言切片slice定义使用优化策略之中等题

在Go语言中,已知一个需求是需要频繁向切片中追加大量元素,在定义切片时,如何初始化切片以优化性能?请简述并给出代码示例。
43.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

在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,这样在后续循环追加元素时,只要追加元素的数量不超过预分配的容量,就不会发生重新分配内存和数据复制的操作,从而提升性能。