Функция utf8.DecodeLastRuneInString
Функция utf8.DecodeLastRuneInString
декодирует последний рун в строке, закодированной в UTF-8.
Она возвращает два значения: сам декодированный рун и его
размер в байтах. В первый параметр функция принимает строку,
из которой нужно извлечь последний рун.
Если строка пустая, функция возвращает utf8.RuneError
и размер 0. Если последний байт строки не является корректным
началом UTF-8 последовательности, возвращается utf8.RuneError
и размер 1.
Синтаксис
rune, size := utf8.DecodeLastRuneInString(str)
Пример
Давайте декодируем последний рун в строке "abcde":
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
r, size := utf8.DecodeLastRuneInString("abcde")
fmt.Printf("rune: %q, size: %d\n", r, size)
}
Результат выполнения кода:
"rune: 'e', size: 1"
Пример
Давайте декодируем последний рун в строке с Unicode символом "Hello, 世界":
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
str := "Hello, 世界"
r, size := utf8.DecodeLastRuneInString(str)
fmt.Printf("rune: %q, size: %d\n", r, size)
}
Результат выполнения кода:
"rune: '界', size: 3"
Пример
Давайте проверим поведение функции на пустой строке:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
r, size := utf8.DecodeLastRuneInString("")
fmt.Printf("rune: %q, size: %d\n", r, size)
}
Результат выполнения кода:
"rune: '�', size: 0"
Пример
Давайте сравним с функцией utf8.DecodeLastRune,
которая работает со срезом байтов:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
str := "Привет"
r1, size1 := utf8.DecodeLastRuneInString(str)
bytes := []byte(str)
r2, size2 := utf8.DecodeLastRune(bytes)
fmt.Printf("From string: rune %q, size %d\n", r1, size1)
fmt.Printf("From bytes: rune %q, size %d\n", r2, size2)
}
Результат выполнения кода:
"From string: rune 'т', size 2"
"From bytes: rune 'т', size 2"
Смотрите также
-
функцию
utf8.DecodeLastRune,
которая декодирует последний рун из среза байтов -
функцию
utf8.DecodeRuneInString,
которая декодирует первый рун в строке -
функцию
utf8.DecodeRune,
которая декодирует первый рун из среза байтов -
функцию
utf8.RuneCountInString,
которая возвращает количество рун в строке