Ответ
Доступ к элементу слайса по индексу в Go имеет константную временную сложность O(1).
Это одна из самых быстрых операций, и её время выполнения не зависит от размера слайса.
Почему O(1)?
Слайс в Go — это легковесная структура (заголовок), которая содержит три поля:
Указатель (pointer)
на начало базового (underlying) массива в памяти.Длина (length)
— количество элементов, доступных в слайсе.Ёмкость (capacity)
— общий размер базового массива от указателя до его конца.
При доступе по индексу s[i]
, Go выполняет простую адресную арифметику: адрес_начала_массива + i * размер_элемента
. Эта операция имеет постоянное время выполнения.
// Время доступа к s[2] и s[999] одинаково
s := []int{1, 2, 3, 4, 5}
element := s[2] // O(1) - моментальный доступ
Таким образом, доступ к любому элементу, будь то первый или последний, происходит одинаково быстро.