Строки и символы
Строки
greeting := "Hello, Go!"
multi := "первая строка\nвторая строка"
raw := `путь: C:\Users\name` // raw-строка, без escape-последовательностей
Строки в Go — неизменяемые последовательности байт в кодировке UTF-8. Конкатенация — оператором +.
len(s) возвращает длину в байтах, а не в символах. Для многобайтовых символов (кириллица, CJK) это важно: len("Привет") == 12, а не 6.
Rune
rune — псевдоним для int32, представляет один Unicode code point (символ).
r := 'А' // тип rune, значение 1040
fmt.Println(string(r)) // "А"
Одинарные кавычки — для rune, двойные — для string.
Перебор строки
range по строке возвращает пары (байтовый индекс, rune):
for i, r := range "Hello" {
fmt.Printf("%d: %c\n", i, r)
}
Это корректно для UTF-8: многобайтовые символы декодируются автоматически. Чтобы получить количество символов (не байт): len([]rune(s)).
Упражнения
| № | Задание | Сложность |
|---|---|---|
| 1 | Упражнение 1 | easy |
| 2 | Упражнение 2 | easy |
| 3 | Упражнение 3 | medium |
| 4 | Упражнение 4 | medium |