РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
254 of 1593 menu

Функция slices.Compact

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

Важно отметить, что функция не изменяет исходный слайс, а создает новый. Она удаляет только те дубликаты, которые находятся рядом. Например, в слайсе [1, 1, 2, 2, 3] останутся [1, 2, 3], а в слайсе [1, 2, 2, 1, 1] - [1, 2, 1].

Синтаксис

slices.Compact(slice)

Пример

Давайте удалим последовательные дубликаты из слайса []int{1, 1, 2, 2, 3, 3, 4}:

package main import ( "fmt" "slices" ) func main() { nums := []int{1, 1, 2, 2, 3, 3, 4} res := slices.Compact(nums) fmt.Println(res) }

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

[1 2 3 4]

Пример

Рассмотрим случай, где дубликаты не идут подряд. Для слайса []string{"a", "b", "b", "a", "a", "c"}:

package main import ( "fmt" "slices" ) func main() { strs := []string{"a", "b", "b", "a", "a", "c"} res := slices.Compact(strs) fmt.Println(res) }

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

[a b a c]

Как видите, были удалены только соседние дубликаты "b" и "a", но дубликат "a" в позиции 3 и 4 остался, так как между ними нет других элементов.

Пример

Функция работает и с пустым слайсом. Давайте проверим:

package main import ( "fmt" "slices" ) func main() { empty := []int{} res := slices.Compact(empty) fmt.Println(res) }

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

[]

Пример

Если слайс не содержит последовательных дубликатов, функция вернет его копию. Например:

package main import ( "fmt" "slices" ) func main() { nums := []int{1, 2, 3, 4, 5} res := slices.Compact(nums) fmt.Println(res) }

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

[1 2 3 4 5]

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

  • функцию slices.CompactFunc,
    которая удаляет последовательные дубликаты с использованием своей функции сравнения
  • функцию slices.Clone,
    которая создает копию слайса
  • функцию slices.Equal,
    которая сравнивает два слайса на равенство
  • функцию slices.Delete,
    которая удаляет элементы из слайса по индексам
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить