s := []int{1,2,3,4,5}; s2 := s[1:3:3]; s2 = append(s2, 99); fmt.Println(s[3])?Трёхиндексный срез s[1:3:3] задаёт не только границы [1:3], но и ограничивает ёмкость: cap(s2)=2. При append(s2, 99) ёмкости не хватает - выделяется новый массив, и 99 пишется уже в него. Исходный слайс s не меняется. Поэтому s[3] остаётся 4. Без третьего индекса (full slice expression) срез s[1:3] имел бы cap=4, и append мог бы перезаписать s[3].
s := []int{1, 2, 3, 4, 5}
s2 := s[1:3:3]
s2 = append(s2, 99)
fmt.Println(s[3]) // 4