Тип rune
Тип rune в Go является псевдонимом для int32 и предназначен для хранения
Unicode-кодовых точек. Он используется для работы с отдельными символами
в строках, которые могут занимать более одного байта в кодировке UTF-8.
В отличие от типа byte, который хранит один байт (ASCII-символ),
тип rune может хранить любой символ из таблицы Unicode.
Синтаксис
var r rune = 'A'
Для объявления переменной типа rune используются одинарные кавычки.
Литерал может содержать как один ASCII-символ, так и Unicode-символ,
например, кириллицу или иероглиф.
Пример
Объявим переменную типа rune и выведем её значение и числовой код:
package main
import "fmt"
func main() {
var r rune = 'А'
fmt.Printf("Символ: %c, код: %d\n", r, r)
}
Результат выполнения кода:
"Символ: А, код: 1040"
Пример
Создадим срез рун из строки и выведем каждый символ по отдельности:
package main
import "fmt"
func main() {
str := "Go语言"
runes := []rune(str)
for i, r := range runes {
fmt.Printf("Индекс: %d, символ: %c, код: %d\n", i, r, r)
}
}
Результат выполнения кода:
"Индекс: 0, символ: G, код: 71"
"Индекс: 1, символ: o, код: 111"
"Индекс: 2, символ: 语, код: 35821"
"Индекс: 3, символ: 言, код: 35328"
Пример
Изменим символ в строке, используя срез рун:
package main
import "fmt"
func main() {
str := "abcde"
runes := []rune(str)
runes[2] = 'Z'
newStr := string(runes)
fmt.Println(newStr)
}
Результат выполнения кода:
"abZde"