Понимание изменений емкости Slice в Go
При работе с ломтиками GO важно понимать их основные свойства, включая их способность. При отбросе последних n элементов из среза сохраняется его емкость, отброшение первых n элементов влияет на емкость.
]Структура среза GO
Go Срезы реализованы как структуры состоящий из трех полей:
type slice struct {
array unsafe.Pointer
len int
cap int
}
func основной() { S: = [] int {2, 3, 5, 7, 11, 13} Printslice (ы) // Отбросить свои последние два значения s = s [: len (s) -2] Printslice (ы) // Отбросить свои первые два значения S = S [2:] Printslice (ы) }
Вывод показывает изменения в длине, емкости, и указатель базового массива, когда мы манипулируем срезом:
ptr = 0x450000 len = 6 cap = 6 [2 3 5 7 7 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ] PTR = 0x450000 LEN = 4 CAP = 6 [2 3 5 7] ptr = 0x450008 len = 2 cap = 4 [5 7]
Заключение
Понимание внутренней структуры срезов GO имеет решающее значение для эффективной манипулирования ими. Признавая, что сброс последних n элементов влияет на мощность иначе, чем сбросы первые элементы N, разработчики могут оптимизировать свой код и избежать потенциальных проблем с производительностью, связанных с изменением размера среза. ]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3