Что такое тип 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

Примеры ответов: