Функция utf8.DecodeLastRune

Функция utf8.DecodeLastRune декодирует последний рунический символ из переданной строки и возвращает его значение rune и количество байтов, которые занимает этот символ в UTF-8 кодировке. Если строка пустая или содержит некорректные байты в конце, функция возвращает значение utf8.RuneError и размер в 1 байт. Функция принимает один параметр - строку для анализа.

Синтаксис

goruneValue, size := utf8.DecodeLastRune(str)

Пример

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

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  str := "abcde"
  runeValue, size := utf8.DecodeLastRune(str)
  fmt.Printf("Rune: %c, Size: %d bytes\n", runeValue, size)
}

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

go"Rune: e, Size: 1 bytes"

Пример

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

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  str := "Привет"
  runeValue, size := utf8.DecodeLastRune(str)
  fmt.Printf("Rune: %c, Size: %d bytes\n", runeValue, size)
}

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

go"Rune: т, Size: 2 bytes"

Пример

Рассмотрим случай с пустой строкой:

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  str := ""
  runeValue, size := utf8.DecodeLastRune(str)
  fmt.Printf("Rune: %d, Size: %d bytes\n", runeValue, size)
}

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

go"Rune: 65533, Size: 1 bytes"

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

  • функцию utf8.DecodeRune,
    которая декодирует первый рунический символ из среза байтов
  • функцию utf8.DecodeRuneInString,
    которая декодирует первый рунический символ из строки
  • функцию utf8.DecodeLastRuneInString,
    которая аналогична текущей и является псевдонимом
  • функцию utf8.RuneCountInString,
    которая возвращает количество рун в строке