В Golang мы можем использовать встроенную функцию make()
для создания среза с заданной начальной длиной и емкостью.
Рассмотрим следующие строки: длина среза равна 1, а его емкость 3:
func main() {
var slice = make([]int, 1, 3)
slice[0] = 1
slice = append(slice, 6, 0, 2, 4, 3, 1)
fmt.Println(slice)
}
Я был удивлен, увидев, что эта программа печатает:
[1 6 0 2 4 3 1]
Это заставило меня задаться вопросом: в чем смысл изначально определять емкость среза, если append()
может просто пропустить его? Есть ли прирост производительности для установки достаточно большой емкости?