На этом шаге рассмотрим функции пакета utf8 для работы со строками в Go.
Пакет unicode/utf8 содержит несколько функций для выполнения операций со строками и срезами типа []bytes, хранящими байты в кодировке UTF-8, многие из которых показаны в табл. 1. Пакет импортируется под именем "unicode/utf8". Переменная b – это срез типа []byte, s – строка типа string, и c – кодовый пункт Юникода типа rune.
Функция | Описание/результат |
---|---|
utf8.DecodeLastRune(b) | Последний символ (значение типа rune) в b и количество байт, занимаемое им, или U+FFFD (символ замены "?"), и 0 – если b не заканчивается допустимым значением типа rune |
utf8.DecodeLastRuneInString(s) | То же, что и функция utf8.DecodeLastRune(), только принимает строку, а не срез |
utf8.DecodeRune(b) | Первый символ (значение типа rune) в b и количество байт, занимаемое им, или U+FFFD (символ замены "?"), и 0 – если b не начинается допустимым значением типа rune |
utf8.DecodeRuneInString(s) | То же, что и функция utf8.DecodeRune(), только принимает строку, а не срез |
utf8.EncodeRune(b,c) | Записывает c в b в виде последовательности байт в кодировке UTF-8 и возвращает число записанных байтов (в срезе b должно быть достаточно свободного места) |
utf8.FullRune(b) | true, если b начинается с допустимого значения типа rune в кодировке UTF-8 |
utf8.FullRuneInString(s) | true, если s начинается с допустимого значения типа rune в кодировке UTF-8 |
utf8.RuneCount(b) | То же, что и функция utf8.RuneCountInString(), но работает со значением типа []byte |
utf8.RuneCountInString(s) | Количество символов типа rune в строке s; это число может быть меньше, чем len(s), если строка s содержит не ASCII-символы |
utf8.RuneLen(c) | Число байтов, необходимых для кодирования символа c |
utf8.RuneStart(x) | true, если байт x может быть первым байтом символа |
utf8.Valid(b) | true, если байты в b представляют допустимые символы в кодировке UTF-8 |
utf8.ValidString(s) | true, если байты в s представляют допустимые символы в кодировке UTF-8 |
На следующем шаге рассмотрим функции пакета unicode.