Строки и символы

greeting := "Hello, Go!"
multi    := "первая строка\nвторая строка"
raw      := `путь: C:\Users\name`  // raw-строка, без escape-последовательностей

Строки в Go — неизменяемые последовательности байт в кодировке UTF-8. Конкатенация — оператором +.

len(s) возвращает длину в байтах, а не в символах. Для многобайтовых символов (кириллица, CJK) это важно: len("Привет") == 12, а не 6.

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Упражнение 1easy
2Упражнение 2easy
3Упражнение 3medium
4Упражнение 4medium