Форматирование строк в Go
Linux, VPS | Комментировать запись
Строки часто представляют собой текст, а потому во многих случаях может потребоваться больший контроль над тем, как они выглядят – ведь удобочитаемость текста зависит от знаков препинания, разрывов строк и отступов.
В этом мануале мы рассмотрим некоторые способы форматирования строк в Go, благодаря чему весь выводимый текст будет выглядеть правильно.
Строковые литералы
Давайте сначала разберемся, в чем различие между строковым литералом и строковым значением. Строковый литерал – это то, что мы видим в исходном коде компьютерной программы, включая кавычки. Строковое значение – это то, что мы видим, когда вызываем функцию fmt.Println и запускаем программу.
Например, в программе «Hello, World!» есть строковый литерал “Hello, World!” и строковое значение Hello, World!. По сути, строковое значение – это то, что мы видим в выводе программы Go в терминале.
Читайте также: Написание простой программы Go
Но некоторые строковые значения могут включать кавычки, например, когда вы используете какую-то цитату. Поскольку строковые литералы и строковые значения – не одно и то же, строковые литералы часто необходимо дополнительно форматировать, чтобы строковые значения отображались так, как нужно.
Кавычки
В Go можно использовать обратные и двойные кавычки, а потому вставить кавычки в строку достаточно просто – можно использовать двойные кавычки в строке, заключенной в обратные кавычки:
`Bobby says, "Hello!"`
Или же можно использовать обратные кавычки внутри строки, а саму строку заключить в двойные кавычки:
"Bobby likes the `fmt` package for formatting strings.."
Комбинируя обратные и двойные кавычки, вы можете контролировать отображение кавычек в строках.
Важно помнить, что обратные кавычки в Go создают необработанный строковый литерал (raw), а двойные кавычки создают интерпретируемый строковый литерал (interpreted). Чтобы узнать больше, прочитайте этот мануал.
Escape-символы
Еще один способ форматирования строк – использование escape-символа. Такие символы указывают, что следующий символ имеет особое значение. Все escape-символы начинаются с обратного слеша (\). Он сочетается с другим символом в строке, чтобы отформатировать данную строку определенным образом.
Вот список нескольких самых распространенных escape-символов:
Escape-символ | Форматирование |
\\ | Бэкслэш |
\” | Двойные кавычки |
\n | Разрыв строки |
\t | Табуляция (горизонтальный отступ) |
Используйте escape-символ, чтобы добавить кавычки в приведенный ниже пример. Обратите внимание, это позволяет вам использовать двойные кавычки как для обозначения строки, так и внутри строки.
fmt.Println("Bobby says, \"Hello!\"")
Bobby says, "Hello!"
Escape-символ \n можно использовать, чтобы разбить строки, не нажимая Enter или Return:
fmt.Println("This string\nspans multiple\nlines.")
This string
spans multiple
lines.
Также можно комбинировать escape-символы. Попробуйте вывести многострочную строку и включить интервалы в списке, например:
fmt.Println("1.\tShark\n2.\tShrimp\n10.\tSquid")
1. Shark
2. Shrimp
10. Squid
Горизонтальный отступ, который выполняет escape-символ \t, выравнивает второй столбец в этом примере, благодаря чему вывод очень удобно читать.
Escape-символы используются для дополнительного форматирования сложных строк. Без escape-символов, например, нельзя было бы создать такую строку:
Bobby says, "I like to use the `fmt` package".
Многострочные строки
Вывод в несколько строк может сделать текст более читабельным. Многострочные строки могут быть сгруппированы в чистый и упорядоченный текст, отформатированы как буквы или использованы для разбиения стихов или текстов песен.
Чтобы создать многострочную строку, заключите ее в обратные кавычки. Имейте в виду: это создает необработанный строковый литерал.
`
This string is on
multiple lines
within three single
quotes on either side.
`
В терминале строка будет отображаться с пустыми строками в начале и в конце:
This string is on
multiple lines
within three single
quotes on either side.
Чтобы этого избежать, нужно поместить первую строку сразу после открывающей кавычки, а закрывающую кавычку поместить сразу после окончания строки.
`This string is on
multiple lines
within three single
quotes on either side.`
Если вам нужно создать интерпретируемый строковый литерал, это можно сделать с помощью двойных кавычек и оператора +, но вам нужно будет самостоятельно вставить разрывы строк.
"This string is on\n" +
"multiple lines\n" +
"within three single\n" +
"quotes on either side."
Обратные кавычки могут упростить восприятие длинного текста. Но если вам нужен интерпретируемый строковый литерал, вам нужно использовать двойные кавычки.
Необработанные строковые литералы
Что если какие-то строки не нуждаются в специальном форматировании? Например, если вам нужно сравнить или оценить строки компьютерного кода, в которых обратный слеш используется буквально, а не в качестве escape-символа, вам нужно сообщить об этом Go. Как это сделать?
Для этого нужен необработанный строковый литерал – он говорит Go игнорировать все форматирование в строке, включая escape-символы.
Попробуйте создать необработанную строку, используя обратные кавычки:
fmt.Println(`Bobby says,\"The balloon\'s color is red.\"`)
Bobby says,\"The balloon\'s color is red.\"
Создавая необработанную строку с помощью обратных кавычек, вы можете сохранить обратные слеши и другие символы, которые используются в качестве escape-символов.
Заключение
В этом вы узнали несколько способов форматирования текста в Go, а также научились работать со строками. Такие методы, как escape-символы или необработанные литералы, помогают правильно отобразить строки программы на экране, чтобы конечный пользователь мог легко прочитать весь текст.
Tags: Go