Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmSlAC 155 of 350 menu
◀ ▶

Рост емкости в Go

Когда места в конце не хватает, добавление заводит новый, более длинный кусок. Точное новое значение емкости заранее не фиксируют: оно становится больше прежнего. Посмотрим длину и емкость до и после серии добавлений в маленький срез.

Создадим срез с длиной 0 и емкостью 2, добавим три числа и после каждого шага выведем len и cap:

nums := make([]int, 0, 2) fmt.Println(len(nums), cap(nums)) nums = append(nums, 10) fmt.Println(len(nums), cap(nums)) nums = append(nums, 20) fmt.Println(len(nums), cap(nums)) nums = append(nums, 30) fmt.Println(len(nums), cap(nums))

Сначала 0 и 2. После третьего добавления длина 3, а емкость уже больше 2: язык выделил новый массив. Точное число емкости на экране может отличаться, но оно растет.

Создайте через make срез с нулевой длиной и емкостью один в tiny, дважды добавьте числа и выведите емкость до второго и после второго добавления.

Добавляйте числа в срез, пока длина не станет больше начальной емкости, и выведите новую емкость.

Скажите, остается ли прежний массив тем же после роста емкости при добавлении.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить