Функция slices.Grow
Функция slices.Grow увеличивает емкость слайса
до указанного размера. Она принимает два параметра:
слайс, который нужно увеличить, и целое число -
необходимую емкость. Функция возвращает новый слайс
с увеличенной емкостью. Если требуемая емкость меньше
или равна текущей, функция возвращает исходный слайс
без изменений.
Синтаксис
slices.Grow(slice, size)
Пример
Давайте увеличим емкость слайса до 10 элементов:
package main
import (
"fmt"
"slices"
)
func main() {
s := []int{1, 2, 3}
fmt.Printf("Length: %d, Capacity: %d\n", len(s), cap(s))
s = slices.Grow(s, 10)
fmt.Printf("Length: %d, Capacity: %d\n", len(s), cap(s))
}
Результат выполнения кода:
"Length: 3, Capacity: 3"
"Length: 3, Capacity: 10"
Пример
Давайте проверим, что функция не изменяет слайс, если требуемая емкость меньше текущей:
package main
import (
"fmt"
"slices"
)
func main() {
s := make([]string, 3, 5)
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Printf("Length: %d, Capacity: %d\n", len(s), cap(s))
s = slices.Grow(s, 2)
fmt.Printf("Length: %d, Capacity: %d\n", len(s), cap(s))
}
Результат выполнения кода:
"Length: 3, Capacity: 5"
"Length: 3, Capacity: 5"
Пример
Давайте используем slices.Grow для подготовки
слайса к добавлению большого количества элементов:
package main
import (
"fmt"
"slices"
)
func main() {
s := make([]int, 0, 2)
fmt.Printf("Initial length: %d, capacity: %d\n", len(s), cap(s))
s = slices.Grow(s, 100)
fmt.Printf("After grow length: %d, capacity: %d\n", len(s), cap(s))
for i := 0; i < 50; i++ {
s = append(s, i)
}
fmt.Printf("After append length: %d, capacity: %d\n", len(s), cap(s))
}
Результат выполнения кода:
"Initial length: 0, capacity: 2"
"After grow length: 0, capacity: 100"
"After append length: 50, capacity: 100"
Смотрите также
-
функцию
len,
которая возвращает длину слайса -
функцию
cap,
которая возвращает емкость слайса -
функцию
slices.Clone,
которая создает копию слайса -
функцию
slices.Clip,
которая уменьшает емкость слайса до его длины