Что такое тип rune Зачем их использовать
Тип `rune` представляет собой alias для типа `int32`, предназначенного для хранения Unicode кодовых точек.
Зачем он нужен?
1. Работа с символами Unicode:
- Строки (`string`) являются последовательностями байтов, а не символов. Это означает, что один символ может занимать больше одного байта, особенно если это символ из расширенного набора Unicode.
- Тип используется для работы с символами, представляемыми одной кодовой точкой Unicode. Это упрощает манипуляции с символами, так как каждая `rune` — это отдельный символ, независимо от его длины в байтах.
2. Повышение читабельности кода:
- Использование типа `rune` делает код более понятным и само-документируемым. Когда в коде виден тип `rune`, это сразу указывает на то, что переменная предназначена для хранения одного символа, а не целого числа.
Как его использовать ?
1. Создание и инициализация:
```go
var r rune = '世'
fmt.Println(r) // Output: 19990
```
Здесь символ `'世'` представлен в виде Unicode кодовой точки и сохраняется как `rune`.
2. Итерация по строке:
```go
s := "Привет, 世界"
for _, r := range s {
fmt.Printf("%c ", r)
}
// Output: П р и в е т , 世 界
```
В данном примере используется цикл `for range`, чтобы итерироваться по строке и извлекать каждый символ в виде `rune`.
3. Преобразование между `string` и `rune`:
```go
s := "Go"
runes := []rune(s)
fmt.Println(runes) // Output: [71 111]
s2 := string(runes)
fmt.Println(s2) // Output: Go
```
Можно преобразовать строку в срез `rune` и обратно, что позволяет легко манипулировать отдельными символами строки.
`rune` — это тип в Go для представления одного символа Unicode, помогающий проще работать с символами и делать код более понятным. Это важно для правильной обработки текста, содержащего символы вне ASCII.
June 2, 2024, easyoffer