Функция bytes.Runes

Функция bytes.Runes преобразует строку в слайс рун ([]rune). Это позволяет работать с каждым Unicode-символом как с отдельным элементом. В качестве единственного параметра функция принимает строку ([]byte) и возвращает слайс рун, где каждый элемент соответствует одному Unicode-кодовому пункту исходной строки. Это особенно полезно при работе с многобайтовыми символами, например, с эмодзи или символами кириллицы.

Синтаксис

gobytes.Runes(s)

Пример

Давайте преобразуем строку "abcde" в слайс рун:

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  s := []byte("abcde")
  res := bytes.Runes(s)
  fmt.Println(res)
}

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

go[97 98 99 100 101]

Как видно из примера, каждый символ преобразуется в соответствующее числовое значение руны.

Пример

Давайте преобразуем строку с русскими символами "привет" в слайс рун:

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  s := []byte("привет")
  res := bytes.Runes(s)
  fmt.Println(res)
}

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

go[1087 1088 1080 1074 1077 1090]

Пример

Давайте проверим, как функция обрабатывает строку с эмодзи "😀😁😂":

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  s := []byte("😀😁😂")
  res := bytes.Runes(s)
  fmt.Println(res)
}

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

go[128512 128513 128514]

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

  • функцию strings.IndexRune,
    которая ищет позицию первого вхождения руны
  • функцию utf8.RuneCount,
    которая подсчитывает количество рун в байтовом слайсе
  • функцию utf8.DecodeRune,
    которая декодирует первую руну из байтового слайса
  • функцию bytes.Runes,
    которая преобразует байтовый слайс в слайс рун