Ответ
Для добавления элемента в середину слайса используйте встроенную функцию append с разбиением слайса. Вот пример:
package main
import "fmt"
func main() {
s := []int{1, 2, 4, 5}
index := 2 // позиция для вставки
value := 3 // значение для вставки
// Разрезаем слайс и добавляем элемент
s = append(s[:index], append([]int{value}, s[index:]...)...)
fmt.Println(s) // [1 2 3 4 5]
}
Важные нюансы:
- Операция создает новый базовый массив при необходимости
- Для больших слайсов лучше использовать
copyдля оптимизации - Если индекс выходит за границы слайса - будет паника
- Для частых вставок рассмотрите другие структуры данных (например, связанный список)