Думаю это сильно зависит от того, как часто вам нужно делать поиск в этом файле.
Если не часто - тогда можно просто вычитывать данные порциями, и искать последовательность в них.
Если же очень часто - нужно понять что там за данные и думать как сделать индекс для поиска в этом файле.
Как вариант, можно запустить несколько горутин.
Т.е. пока одна горутина читает одну порцию данных из файла в память - другая ищет в предыдущей порции нужную вам последовательность.
Еще, как вариант, можно сделать простенький индекс (упрощаю, чтобы было легче писать понятный пример)
Допустим у нас есть файл с таким содержимым
0x02 0x09 0x02 0x05 0x09 0x09, 0xf1 0xfa 0x02
Найти нужно последовательность 0x02 0x05
Строим индекс [массив байт от 0x00 до 0xff][слайс адресов этого байта в файле]
т.е.
[значение байта][адрес этого байта в файле1, адрес этого байта в файле2, адрес этого байта в файле3...]
Для указанного файла индекс получится вот такой
[0x00][]
[0x01][]
[0x02][0x00, 0x02, 0x08]
...
[0x05][0x03]
...
[0x09][0x01, 0x04, 0x05]
...
[0xf1][0x06]
...
[0xfa][0x07]
...
Первый байт в искомой последовательности 0x02 0x05 - будет 0x02.
Мы берём слайс в массиве по индексу 0x02 и получаем список адресов где в файле есть 0x02 - [0x00, 0x02, 0x08]
А дальше вы проверяете вашу последовательность только начиная с полученных смещений
Т.е. проверяем следующий байт по адресу 0x00 + 1 == 0x05 (второму символу последовательности) или нет.
Если нет - значит берём след. смещение 0х02 и опять проверяем равен ли след. символ 0x05.
Равен, значит нашли последовательность.