Функция utf8.RuneLen
Функция utf8.RuneLen определяет длину в байтах для переданной руны в кодировке UTF-8.
В качестве единственного параметра она принимает значение типа rune
и возвращает целое число — количество байт (от 1 до 4), которое занимает эта руна в UTF-8.
Если переданное значение не является допустимой кодовой точкой Unicode,
функция вернет -1. Это полезно для проверки валидности рун
перед их кодированием или записью в байтовый буфер.
Синтаксис
utf8.RuneLen(r)
Пример
Определим длину в байтах для латинской буквы 'a':
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
r := 'a'
res := utf8.RuneLen(r)
fmt.Println(res)
}
Результат выполнения кода:
1
Пример
Определим длину в байтах для кириллической буквы 'Я':
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
r := 'Я'
res := utf8.RuneLen(r)
fmt.Println(res)
}
Результат выполнения кода:
2
Пример
Определим длину в байтах для иероглифа '𠀋' (U+2000B):
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
r := '𠀋'
res := utf8.RuneLen(r)
fmt.Println(res)
}
Результат выполнения кода:
4
Пример
Проверим поведение функции на невалидном значении (например, суррогатная пара):
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
r := rune(0xDC00) // невалидная кодовая точка
res := utf8.RuneLen(r)
fmt.Println(res)
}
Результат выполнения кода:
-1
Смотрите также
-
функцию
utf8.RuneCount,
которая считает количество рун в байтовом слайсе -
функцию
utf8.RuneCountInString,
которая считает количество рун в строке -
функцию
utf8.DecodeRune,
которая декодирует первую руну из байтового слайса -
функцию
utf8.EncodeRune,
которая кодирует руну в байтовый слайс