Поиск по байтовому массиву?

В Go для поиска по байтовому массиву можно использовать функцию bytes.Index() из пакета bytes. Эта функция производит поиск первого вхождения одного массива байтов в другой массив байтов и возвращает индекс первого вхождения или -1, если искомая подстрока не найдена.

Пример использования функции bytes.Index():

package main

import (
	"bytes"
	"fmt"
)

func main() {
	array := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	subarray := []byte{4, 5, 6}

	index := bytes.Index(array, subarray)
	if index != -1 {
		fmt.Printf("Подстрока найдена на позиции %dn", index)
	} else {
		fmt.Println("Подстрока не найдена")
	}
}

В данном примере мы создаем байтовый массив array и подстроку subarray. Затем мы используем функцию bytes.Index() для поиска подстроки subarray в массиве array. Если подстрока найдена, то функция возвращает индекс первого вхождения, который мы выводим на экран. Если подстрока не найдена, то функция возвращает -1, и мы выводим сообщение о том, что подстрока не найдена.

Функция bytes.Index() имеет еще несколько вариантов: bytes.LastIndex() для поиска последнего вхождения подстроки, bytes.IndexAny() для поиска первого вхождения любого символа из заданного набора, и bytes.LastIndexAny() для поиска последнего вхождения любого символа из заданного набора.

Однако, если вам нужно выполнить более сложные операции поиска по байтовому массиву, такие как поиск всех вхождений или использование регулярных выражений, вам может быть полезна стандартная библиотека regexp. Она предоставляет более мощные инструменты для работы с текстом и байтовыми массивами.