cpp

Строки

Для хранения строки предназначен тип данных string. Строки являются упорядоченными последовательностями байтов (байтовым срезом). Длина строки ограничена лишь объемом оперативной памяти компьютера. Следует учитывать, что символы внутри строки изменить нельзя, поэтому все строковые функции в качестве значения возвращают новую строку.

Объявление строки

Объявление и инициализация строки осуществляется по следующей схеме:

var <Переменная> string[ = <Значение>]

Если значение не указано, то переменной будет присвоена пустая строка:

var s string
fmt.Printf("%q\n", s) // ""
fmt.Printf("%T\n", s) // string

После оператора = можно указать строку внутри двойных кавычек:

var s string = "строка"
fmt.Println(s)        // строка

Если задано значение, то тип данных можно опустить:

var s = "строка"
fmt.Println(s)        // строка
fmt.Printf("%T\n", s) // string

Можно также использовать сокращенный формат объявления локальной переменной:

s := "строка"
fmt.Println(s)        // строка
fmt.Printf("%T\n", s) // string

Внутри строкового литерала можно указать специальные символы (см. разд. 7.1.2):

s := "\n\r\f\t\v\b\\\167\x77\u005B"
fmt.Printf("%q\n", s) // "\n\r\f\t\v\b\\ww["

Если внутри строки встречается обратный слэш, то его необходимо экранировать. Это обязательно следует учитывать при указании пути к файлу:

s1 := "C:\\temp\\new\\file.txt" // Правильно
s2 := "C:\temp\new\file.txt"    // Неправильно!!!
fmt.Println(s1)                 // C:\temp\new\file.txt
fmt.Println(s2)                 // Строка с ошибками!!!

Обратите внимание на вторую строку. В этом пути присутствуют сразу три специальных символа: \t, \n и \f. После преобразования специальных символов путь будет выглядеть следующим образом:

C:<Табуляция>emp<Перевод строки>ew<Перевод формата>ile.txt

Внутри строки одинарная кавычка специальным символом не является. При этом двойные кавычки ограничивают строковый литерал, поэтому чтобы вставить двойную кавычку в строку ее нужно экранировать с помощью слеша, иначе кавычка станет концом строки:

s := "Группа \"Кино\""
fmt.Println(s) // Группа "Кино"

Следует заметить, что разместить строковый литерал внутри двойных кавычек на нескольких строках нельзя. Переход на новую строку вызовет синтаксическую ошибку:

s := "Строка1
Строка2"       // Так нельзя!

В этом случае можно использовать операцию конкатенации строк:

s := "Строка1" +
     "Строка2" +
     "Строка3"
fmt.Println(s) // Строка1Строка2Строка3

Вместо двойных кавычек можно использовать обратные кавычки. В этом случае одинарные и двойные кавычки специальными символами не являются:

s := `строка"'`
fmt.Println(s)        // строка"'
fmt.Printf("%T\n", s) // string

Обратите внимание: внутри строки в обратных кавычках вообще нельзя использовать специальные символы. Специальные последовательности трактуются как отдельные символы. Символ слеша также экранировать не нужно, что удобно при создании шаблона регулярного выражения. Пример:

s := `строка\n\t\`
fmt.Println(s) // строка\n\t\

При использовании обратных кавычек становится доступным многострочный режим с полным сохранением форматирования:

s := `Строка1
Строка2`
fmt.Printf("%q\n", s) // "Строка1\nСтрока2"
На заметку

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp