Функция bytes.Cut
Функция bytes.Cut разделяет байтовый срез на две части
по первому вхождению указанного разделителя. Она возвращает
три значения: часть до разделителя, часть после разделителя
и булево значение, указывающее, был ли найден разделитель.
Первый параметр функции — исходный байтовый срез, второй — разделитель.
Синтаксис
before, after, found := bytes.Cut(s, sep)
Пример
Давайте разделим строку "a,b,c" по первому вхождению запятой:
package main
import (
"bytes"
"fmt"
)
func main() {
s := []byte("a,b,c")
sep := []byte(",")
before, after, found := bytes.Cut(s, sep)
fmt.Printf("before: %q, after: %q, found: %t\n", before, after, found)
}
Результат выполнения кода:
"before: \"a\", after: \"b,c\", found: true"
Пример
Если разделитель не найден, функция возвращает исходный срез
в качестве первой части, пустой срез в качестве второй части и false:
package main
import (
"bytes"
"fmt"
)
func main() {
s := []byte("abcde")
sep := []byte("xyz")
before, after, found := bytes.Cut(s, sep)
fmt.Printf("before: %q, after: %q, found: %t\n", before, after, found)
}
Результат выполнения кода:
"before: \"abcde\", after: \"\", found: false"
Пример
Функция учитывает только первое вхождение разделителя. Все последующие вхождения остаются во второй части:
package main
import (
"bytes"
"fmt"
)
func main() {
s := []byte("one:two:three:four")
sep := []byte(":")
before, after, found := bytes.Cut(s, sep)
fmt.Printf("before: %q, after: %q, found: %t\n", before, after, found)
}
Результат выполнения кода:
"before: \"one\", after: \"two:three:four\", found: true"
Смотрите также
-
функцию
strings.Cut,
которая выполняет аналогичное разделение для строк -
функцию
strings.CutPrefix,
которая удаляет префикс из строки -
функцию
strings.CutSuffix,
которая удаляет суффикс из строки -
функцию
bytes.Split,
которая разделяет байтовый срез по всем вхождениям разделителя