Функция bytes.Index

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

Синтаксис

gobytes.Index(s, sep)

Пример

Давайте найдем позицию подстроки 'cd' в байтовом срезе 'abcde':

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  s := []byte("abcde")
  sub := []byte("cd")
  res := bytes.Index(s, sub)
  fmt.Println(res)
}

Результат выполнения кода:

go2

Пример

Давайте попробуем найти подстроку 'xyz' в байтовом срезе 'abcde':

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  s := []byte("abcde")
  sub := []byte("xyz")
  res := bytes.Index(s, sub)
  fmt.Println(res)
}

Результат выполнения кода:

go-1

Пример

Поиск подстроки в байтовом срезе с учетом регистра:

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  s := []byte("Hello, World!")
  sub := []byte("world")
  res := bytes.Index(s, sub)
  fmt.Println(res)
}

Результат выполнения кода:

go-1

Смотрите также

  • функцию bytes.Contains,
    которая проверяет наличие подстроки в байтовом срезе
  • функцию bytes.IndexAny,
    которая ищет позицию любого символа из набора
  • функцию bytes.LastIndex,
    которая возвращает позицию последнего вхождения подстроки
  • функцию bytes.HasPrefix,
    которая проверяет наличие префикса у байтового среза