Константа utf8.UTFMax
Константа utf8.UTFMax определяет максимальную длину в байтах,
которую может занимать один символ Unicode (руна) при кодировании в UTF-8.
Эта константа полезна при выделении буферов для работы с рунами,
так как гарантирует, что буфер будет достаточно большим для хранения
любой кодовой точки.
Синтаксис
const UTFMax = 4
Пример
Давайте выведем значение константы utf8.UTFMax:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
fmt.Println(utf8.UTFMax)
}
Результат выполнения кода:
4
Пример
Давайте используем константу для выделения буфера для кодирования руны:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
buf := make([]byte, utf8.UTFMax)
r := '⌘'
n := utf8.EncodeRune(buf, r)
fmt.Printf("Rune: %c, bytes: %d\n", r, n)
fmt.Printf("Buffer: %q\n", buf[:n])
}
Результат выполнения кода:
"Rune: ⌘, bytes: 3"
"Buffer: \"⌘\""
Пример
Давайте проверим, что все руны действительно
помещаются в буфер размером utf8.UTFMax:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
runes := []rune{'A', '±', '世', '𠀀'}
buf := make([]byte, utf8.UTFMax)
for _, r := range runes {
n := utf8.EncodeRune(buf, r)
fmt.Printf("%c takes %d bytes\n", r, n)
}
}
Результат выполнения кода:
"A takes 1 bytes"
"± takes 2 bytes"
"世 takes 3 bytes"
"𠀀 takes 4 bytes"
Смотрите также
-
константу
utf8.MaxRune,
которая определяет максимальное значение кодовой точки Unicode -
функцию
utf8.RuneLen,
которая возвращает количество байт для руны -
функцию
utf8.EncodeRune,
которая кодирует руну в байтовый срез -
функцию
utf8.DecodeRune,
которая декодирует руну из байтового среза