Ответ
Длина (len) - текущее количество элементов в слайсе. Емкость (cap) - максимальное количество элементов, которое слайс может вместить без переаллокации памяти.
Пример:
s := make([]int, 3, 5) // len=3, cap=5
fmt.Println(len(s)) // 3
fmt.Println(cap(s)) // 5
Ключевые отличия:
- len можно изменять в пределах cap (s = s[:4])
- cap увеличивается автоматически при append, если не хватает места
- cap показывает, сколько памяти выделено под слайс "под капотом"
При append, если len == cap, создается новый массив с увеличенной емкостью (обычно в 2 раза) и копируются данные.