Константа utf8.MaxRune
Константа utf8.MaxRune из пакета unicode/utf8
определяет максимальное значение кодовой точки в стандарте Unicode.
Это значение равно 0x10FFFF, что соответствует последнему
допустимому кодовому символу в Unicode. Константа часто используется
при валидации рун, проверке допустимых значений символов и при работе
с кодировкой UTF-8.
Синтаксис
utf8.MaxRune
Пример
Давайте выведем значение константы utf8.MaxRune
в различных системах счисления:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
fmt.Printf("Десятичное: %d\n", utf8.MaxRune)
fmt.Printf("Шестнадцатеричное: 0x%X\n", utf8.MaxRune)
fmt.Printf("Двоичное: %b\n", utf8.MaxRune)
}
Результат выполнения кода:
"Десятичное: 1114111"
"Шестнадцатеричное: 0x10FFFF"
"Двоичное: 100001111111111111111"
Пример
Рассмотрим, как использовать utf8.MaxRune
для проверки допустимости руны в цикле по строке:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
str := "Hello, 世界!"
for _, r := range str {
if r <= utf8.MaxRune {
fmt.Printf("Руна '%c' допустима (код: %d)\n", r, r)
} else {
fmt.Printf("Руна '%c' недопустима\n", r)
}
}
}
Результат выполнения кода:
"Руна 'H' допустима (код: 72)"
"Руна 'e' допустима (код: 101)"
"Руна 'l' допустима (код: 108)"
"Руна 'l' допустима (код: 108)"
"Руна 'o' допустима (код: 111)"
"Руна ',' допустима (код: 44)"
"Руна ' ' допустима (код: 32)"
"Руна '世' допустима (код: 19990)"
"Руна '界' допустима (код: 30028)"
"Руна '!' допустима (код: 33)"
Пример
Покажем, как использовать utf8.MaxRune
для проверки корректности декодированной руны:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
data := []byte{0xF0, 0x9F, 0x8C, 0x8D} // символ 🌍
r, size := utf8.DecodeRune(data)
if r <= utf8.MaxRune {
fmt.Printf("Руна: %c (код: %d, размер: %d байт)\n", r, r, size)
} else {
fmt.Printf("Недопустимая руна: %d\n", r)
}
}
Результат выполнения кода:
"Руна: 🌍 (код: 127757, размер: 4 байт)"
Смотрите также
-
константу
utf8.RuneError,
которая обозначает код ошибки для некорректных рун -
константу
utf8.RuneSelf,
которая определяет границу между ASCII и многобайтовыми символами -
функцию
utf8.ValidRune,
которая проверяет, является ли руна допустимой в Unicode -
константу
utf8.UTFMax,
которая определяет максимальное количество байтов в кодировке UTF-8 (4 байта)