Функция utf8.RuneStart

Функция utf8.RuneStart проверяет, является ли переданный байт началом корректного UTF-8 символа (руны). Она принимает один параметр - байт типа byte и возвращает true, если этот байт может быть началом руны. Функция полезна при проверке границ строк и валидации UTF-8 данных.

Синтаксис

goutf8.RuneStart(b byte) bool

Пример

Давайте проверим, является ли байт началом UTF-8 символа для латинской буквы 'a' (ASCII символ, занимает 1 байт):

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  b := byte('a')
  res := utf8.RuneStart(b)
  fmt.Println(res)
}

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

gotrue

Пример

Теперь давайте проверим байт, который не является началом UTF-8 символа (например, продолжение многобайтового символа). Возьмем второй байт кириллической буквы 'я' в кодировке UTF-8:

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  s := "я"
  b := s[1] // Второй байт символа 'я'
  res := utf8.RuneStart(b)
  fmt.Println(res)
}

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

gofalse

Пример

Давайте проверим байт, который является началом многобайтового UTF-8 символа. Возьмем первый байт кириллической буквы 'я':

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  s := "я"
  b := s[0] // Первый байт символа 'я'
  res := utf8.RuneStart(b)
  fmt.Println(res)
}

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

gotrue

Пример

Важно отметить, что функция возвращает true для любого байта, который может быть началом руны, включая байты, не являющиеся корректными в UTF-8:

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  // Байт 0xC0 - некорректный в UTF-8, но может быть началом
  b := byte(0xC0)
  res := utf8.RuneStart(b)
  fmt.Println(res)
}

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

gotrue

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

  • функцию utf8.ValidRune,
    которая проверяет, является ли руна корректной
  • функцию utf8.RuneCountInString,
    которая возвращает количество рун в строке
  • функцию utf8.DecodeRuneInString,
    которая декодирует первую руну из строки
  • функцию utf8.ValidString,
    которая проверяет, является ли строка корректной UTF-8