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