Можно сделать map[string]int, и сделать по одному проходу для каждого массива где в каждой итерации будете увеличивать значение в map на 1 (где ключ = слово из массива).
В итоге в map будут лежать ключи со значением 2 - это пересечения, а где 1 - наоборот "уникальные".
Вот сделал пример: https://play.golang.org/p/Xh009uAy-M
4 режима:
1 - те что есть только в левом массиве
2 - те что только в правом
3 - пересечение, то что вам нужно
4 - это те что в пересечение не попали
формируется за 1 проход, будет работать быстрее чем ваш квадратный перебор.
lelvisl: Если один массив используется много, то сделать с сортировкой. А если элементы внутри массива, в котором искать, не повторяются, то ещё и удалять из него.
«Пользователь удалён»: Есть 500к массивов, в которых теги. Каждый из них надо сверить с массивом, в котором нудные мне теги, и я на этой операции получаю список массивов, которые имеют нужные мне теги.
lelvisl: ну у вас же не задача на нахождение пересечения 2-х массивов, собственно цель то этого всего в чем, зачем вам искать пересечение в 500к слайсов ?
«Пользователь удалён»: Не варинат пересторить базы, на них уже работает апликейшн. Мое дело - неофициально вытаскивать данные и самостоятельно строить статистику
(вендор заломил огромные бабки за статистику.)
А тут без внешней надстройки над базой никак, я просто выбрал го, так как им в данный момент активно пользуюсь.