cpp

Байтовые слайсы. Поиск фрагментов

Выполнить поиск фрагментов внутри байтового слайса позволяют следующие функции:

  • Index() — возвращает позицию первого вхождения фрагмента sep в слайс s. Если фрагмент не найден, то возвращается значение -1. Формат функции:
bytes.Index(s []byte, sep []byte) int

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.Index(arr, []byte("1"))) // 2
fmt.Println(bytes.Index(arr, []byte("3"))) // -1
  • IndexByte() — возвращает позицию первого вхождения байта c в слайс b. Если ничего не найдено, то возвращается значение -1. Формат функции:
bytes.IndexByte(b []byte, c byte) int

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.IndexByte(arr, '1')) // 2
fmt.Println(bytes.IndexByte(arr, '3')) // -1
  • IndexRune() — возвращает позицию первого вхождения символа r в слайс s. Если ничего не найдено, то возвращается значение -1. Формат функции:
bytes.IndexRune(s []byte, r rune) int

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.IndexRune(arr, '1')) // 2
fmt.Println(bytes.IndexRune(arr, '3')) // -1
  • IndexFunc() — возвращает позицию первого вхождения символа, для которого функция f вернула значение true, в слайс s. Если ничего не найдено, то возвращается значение -1. Формат функции:
bytes.IndexFunc(s []byte, f func(r rune) bool) int

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.IndexFunc(arr, func(r rune) bool {
   return r == '1'
})) // 2
fmt.Println(bytes.IndexFunc(arr, func(r rune) bool {
   return r == '3'
})) // -1
  • IndexAny() — возвращает позицию первого вхождения одного из символов строки chars в слайс s. Если ничего не найдено, то возвращается значение -1. Формат функции:
bytes.IndexAny(s []byte, chars string) int

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.IndexAny(arr, "341")) // 2
fmt.Println(bytes.IndexAny(arr, "345")) // -1
  • LastIndex() — возвращает позицию последнего вхождения фрагмента sep в слайс s. Если фрагмент не найден, то возвращается значение -1. Формат функции:
bytes.LastIndex(s []byte, sep []byte) int

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.LastIndex(arr, []byte("1"))) // 6
fmt.Println(bytes.LastIndex(arr, []byte("3"))) // -1
  • LastIndexByte() — возвращает позицию последнего вхождения байта c в слайс s. Если ничего не найдено, то возвращается значение -1. Формат функции:
bytes.LastIndexByte(s []byte, c byte) int

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.LastIndexByte(arr, '1')) // 6
fmt.Println(bytes.LastIndexByte(arr, '3')) // -1
  • LastIndexFunc() — возвращает позицию последнего вхождения символа, для которого функция f вернула значение true, в слайс s. Если ничего не найдено, то возвращается значение -1. Формат функции:
bytes.LastIndexFunc(s []byte, f func(r rune) bool) int

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.LastIndexFunc(arr, func(r rune) bool {
   return r == '1'
})) // 6
fmt.Println(bytes.LastIndexFunc(arr, func(r rune) bool {
   return r == '3'
})) // -1
  • LastIndexAny() — возвращает позицию последнего вхождения одного из символов строки chars в слайс s. Если ничего не найдено, то возвращается значение -1. Формат функции:
bytes.LastIndexAny(s []byte, chars string) int

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.LastIndexAny(arr, "341")) // 6
fmt.Println(bytes.LastIndexAny(arr, "345")) // -1
  • Count() — возвращает число вхождений фрагмента sep в слайс s. Если фрагмент в слайс не входит, то возвращается значение 0. Формат функции:
bytes.Count(s []byte, sep []byte) int

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.Count(arr, []byte("1"))) // 2
fmt.Println(bytes.Count(arr, []byte("3"))) // 0
  • Contains() — возвращает значение true, если фрагмент subslice входит в слайс b, и false — в противном случае. Формат функции:
bytes.Contains(b []byte, subslice []byte) bool

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.Contains(arr, []byte("1"))) // true
fmt.Println(bytes.Contains(arr, []byte("3"))) // false
  • ContainsRune() — возвращает значение true, если символ r входит в слайс b, и false — в противном случае. Формат функции:
bytes.ContainsRune(b []byte, r rune) bool

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.ContainsRune(arr, '1')) // true
fmt.Println(bytes.ContainsRune(arr, '3')) // false
  • ContainsAny() — возвращает значение true, если один из символов строки chars входит в слайс b, и false — в противном случае. Формат функции:
bytes.ContainsAny(b []byte, chars string) bool

Пример:

arr := []byte("0 1 2 1 0")
fmt.Println(bytes.ContainsAny(arr, "341")) // true
fmt.Println(bytes.ContainsAny(arr, "345")) // false
  • HasPrefix() — возвращает значение true, если слайс s начинается с фрагмента prefix, и false — в противном случае. Формат функции:
bytes.HasPrefix(s []byte, prefix []byte) bool

Пример:

arr := []byte("abcd")
fmt.Println(bytes.HasPrefix(arr, []byte("ab"))) // true
fmt.Println(bytes.HasPrefix(arr, []byte("cd"))) // false
  • HasSuffix() — возвращает значение true, если слайс s заканчивается фрагментом suffix, и false — в противном случае. Формат функции:
bytes.HasSuffix(s []byte, suffix []byte) bool

Пример:

arr := []byte("abcd")
fmt.Println(bytes.HasSuffix(arr, []byte("ab"))) // false
fmt.Println(bytes.HasSuffix(arr, []byte("cd"))) // true

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp