Вопрос: Как работает append и когда происходит реаллокация?
Go
Junior
Без компании
Вопрос: Как работает append и когда происходит реаллокация?
Ответы
append добавляет элементы; если cap хватает — расширяет len, иначе выделяет новый массив и копирует данные.
```go
package main
import "fmt"
func main() {
s := make([]int, 0, 2)
fmt.Println(len(s), cap(s))
s = append(s, 1, 2)
fmt.Println(len(s), cap(s), s)
s = append(s, 3) // возможно рост cap
fmt.Println(len(s), cap(s), s)
}
```
Рост cap — деталь реализации, но в среднем увеличивается ступенчато.