Функция slices.Delete

Функция slices.Delete удаляет элементы из слайса в заданном диапазоне индексов. Она принимает три параметра: исходный слайс, начальный индекс (включительно) и конечный индекс (исключительно). Функция возвращает новый слайс, содержащий все элементы, кроме удаленных. Обратите внимание, что функция не изменяет исходный слайс, а создает новый.

Синтаксис

goslices.Delete(slice, start, end)

Пример

Давайте удалим элементы с индексами 1, 2 и 3 из слайса содержащего строки 'a', 'b', 'c', 'd', 'e':

gopackage main

import (
  "fmt"
  "slices"
)

func main() {
  slice := []string{"a", "b", "c", "d", "e"}
  res := slices.Delete(slice, 1, 4)
  fmt.Println(res)
}

Результат выполнения кода:

go[a e]

Пример

Давайте удалим первый элемент из слайса чисел [1, 2, 3, 4, 5]:

gopackage main

import (
  "fmt"
  "slices"
)

func main() {
  slice := []int{1, 2, 3, 4, 5}
  res := slices.Delete(slice, 0, 1)
  fmt.Println(res)
}

Результат выполнения кода:

go[2 3 4 5]

Пример

Давайте удалим последний элемент из слайса строк ['a', 'b', 'c', 'd', 'e']:

gopackage main

import (
  "fmt"
  "slices"
)

func main() {
  slice := []string{"a", "b", "c", "d", "e"}
  lastIndex := len(slice)
  res := slices.Delete(slice, lastIndex-1, lastIndex)
  fmt.Println(res)
}

Результат выполнения кода:

go[a b c d]

Пример

Давайте удалим все элементы из слайса чисел, оставив пустой слайс:

gopackage main

import (
  "fmt"
  "slices"
)

func main() {
  slice := []int{1, 2, 3, 4, 5}
  res := slices.Delete(slice, 0, len(slice))
  fmt.Println(res)
}

Результат выполнения кода:

go[]

Пример

Важно отметить, что функция slices.Delete не изменяет исходный слайс, а создает новый. Давайте проверим это на примере:

gopackage main

import (
  "fmt"
  "slices"
)

func main() {
  original := []string{"a", "b", "c", "d", "e"}
  res := slices.Delete(original, 1, 3)
  
  fmt.Println("Original:", original)
  fmt.Println("Result:", res)
}

Результат выполнения кода:

go"Original: [a b c d e]"
"Result: [a d e]"

Как видно из примера, исходный слайс остался неизменным, а функция вернула новый слайс с удаленными элементами.

Смотрите также

  • функцию slices.DeleteFunc,
    которая удаляет элементы по условию
  • функцию slices.Insert,
    которая вставляет элементы в слайс
  • функцию slices.Replace,
    которая заменяет элементы в слайсе
  • функцию slices.Clone,
    которая создает копию слайса