Основы Go
Теория: Множественные операции над слайсами
Go не имеет встроенного типа множества, но с помощью стандартного пакета slices и сторонней библиотеки lo можно легко реализовать основные операции, такие как проверка вхождения, удаление дубликатов, объединение и пересечение.
Библиотека lo — это популярный набор утилит для работы со срезами и другими структурами данных в Go. Она дополняет возможности стандартной библиотеки, предоставляя функции высокого уровня, которых нет в slices. Мы используем её для упрощения написания кода и повышения читаемости, особенно для таких операций, как объединение или пересечение срезов.
Проверка вхождения элемента
Для проверки наличия элемента в срезе используем slices.Contains():
Удаление дубликатов
Удалить дубликаты можно с помощью slices.Compact(), но только для отсортированных данных. Если порядок элементов важен, используем lo.Uniq():
Объединение (union)
Стандартный пакет slices не предоставляет функции объединения, поэтому используем lo.Union():
Пересечение (intersection)
Для пересечения тоже используем lo.Intersect:
Разность (difference)
Разность множеств можно вычислить через lo.Difference():
Симметрическая разность
Симметрическая разность — это элементы, которые есть в одном из срезов, но не в обоих.
Её можно получить через lo.Difference(), комбинируя оба результата:
Вывод
Используя пакет slices для базовых операций и lo для более продвинутых функций (объединение, пересечение, разность), можно работать со срезами в Go так же удобно, как с множествами в других языках.





