Константа utf8.RuneSelf

Константа utf8.RuneSelf представляет собой максимальное значение, которое может быть закодировано одним байтом в UTF-8. Её значение равно 0x80 (128 в десятичной системе). Все символы с кодом меньше этого значения кодируются одним байтом, что соответствует ASCII-символам. Эта константа полезна при низкоуровневой работе с UTF-8 строками и байтовыми последовательностями.

Синтаксис

goutf8.RuneSelf

Пример

Давайте выведем значение константы utf8.RuneSelf:

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  res := utf8.RuneSelf
  fmt.Println(res)
}

Результат выполнения кода:

go128

Пример

Давайте используем utf8.RuneSelf для проверки, является ли байт началом многобайтового символа:

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  b := byte('A')
  if b < utf8.RuneSelf {
    fmt.Println("This byte is a single-byte character")
  }

  b2 := byte(0xE0)
  if b2 >= utf8.RuneSelf {
    fmt.Println("This byte is a start of multi-byte character")
  }
}

Результат выполнения кода:

go"This byte is a single-byte character"
"This byte is a start of multi-byte character"

Пример

Давайте сравним байты строки с utf8.RuneSelf, чтобы определить количество однобайтовых символов:

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  str := "Hello, 世界"
  count := 0

  for i := 0; i < len(str); i++ {
    if str[i] < utf8.RuneSelf {
      count++
    }
  }

  fmt.Printf("Single-byte characters: %d\n", count)
  fmt.Printf("Total bytes: %d\n", len(str))
}

Результат выполнения кода:

go"Single-byte characters: 7"
"Total bytes: 13"

Смотрите также

  • константу utf8.MaxRune,
    которая определяет максимальное значение руны
  • константу utf8.UTFMax,
    которая определяет максимальное количество байт для руны
  • константу utf8.RuneError,
    которая представляет собой код ошибки для некорректных рун
  • функцию utf8.RuneLen,
    которая возвращает количество байт для руны