Символы, ASCII и Unicode
Тип rune является псевдонимом для int32 и используется, чтобы подчеркнуть, что целое число представляет кодовую точку.
ASCII определяет 128 символов, обозначенных кодовыми точками 0–127. Он охватывает английские буквы, латинские цифры и несколько других символов.
Unicode, который является надмножеством ASCII, определяет кодовое пространство из 1114112 кодовых точек. Unicode версия 10.0 охватывает 139 современных и исторических скриптов (включая рунический алфавит, но не клингон), а также множество наборов символов.
Строки и кодировка UTF-8
Строка - это последовательность байтов, а не рун.
Однако строки часто содержат текст Unicode, закодированный в UTF-8, который кодирует все кодовые точки Unicode, используя от одного до четырех байтов. (Символы ASCII кодируются одним байтом, в то время как другие кодовые точки используют больше.)
Поскольку сам исходный код Go кодируется как UTF-8, строковые литералы автоматически получат эту кодировку.
Например, в строке "café" символ é (кодовая точка 233) кодируется с использованием двух байтов, тогда как символы ASCII c, a и f (кодовые точки 99, 97 и 102) используют только один:
fmt.Println([]byte("café")) // [99 97 102 195 169]
fmt.Println([]rune("café")) // [99 97 102 233]
Читайте также:
- Строка, байт, руна, символ в Golang
- Обзор обработки строк в Golang
- Эффективная конкатенация строк в Golang
Комментариев нет:
Отправить комментарий