Поскольку строки часто состоят из письменного текста, во многих случаях нам может потребоваться больший контроль над тем, как выглядят строки, чтобы сделать их более удобочитаемыми для людей с помощью знаков препинания, разрывов строк и отступов.
В этом руководстве мы рассмотрим некоторые способы работы со строками Go, чтобы убедиться, что весь выводимый текст отформатирован правильно.
Строковые литералы
Давайте сначала проведем различие между string literal и string value. Строковый литерал - это то, что мы видим в исходном коде компьютерной программы, включая кавычки. Строковое значение - это то, что мы видим, когда вызываем функцию + fmt.Println +
и запускаем программу.
В программе «Hello, World!» Строковый литерал имеет вид «« Hello, World! »`, А строковое значение равно «+ Hello, World! +» Без кавычек. Строковое значение - это то, что мы видим как вывод в окне терминала, когда запускаем программу Go.
Но некоторые строковые значения могут включать кавычки, например, когда мы цитируем источник. Поскольку строковые литералы и строковые значения не эквивалентны, часто необходимо добавить дополнительное форматирование к строковым литералам, чтобы гарантировать, что строковые значения отображаются так, как мы намереваемся.
Цитаты
Поскольку мы можем использовать обратные кавычки (+ \
+ ) или двойные кавычки (
+ "+`) в Go, просто встроить кавычки в строку, используя двойные кавычки в строке, заключенной в обратные кавычки:
`Sammy says, "Hello!"`
Или, чтобы использовать обратную кавычку, вы можете заключить строку в двойные кавычки:
"Sammy likes the `fmt` package for formatting strings.."
Таким образом, как мы комбинируем обратные и двойные кавычки, мы можем контролировать отображение кавычек и обратных кавычек в наших строках.
Важно помнить, что использование обратных кавычек в Go создает строковый литерал + raw
, а использование двойных кавычек создает строковый литерал` + интерпретированный`. Чтобы узнать больше о разнице, прочитайте учебник https://www.digitalocean.com/community/tutorials/an-introduction-to-working-with-strings-in-go[An Введение в работу со строками в Go.
Побег персонажей
Еще один способ форматирования строк - использование escape-символа. Экранирующие символы используются для обозначения кода, что следующий символ имеет особое значение. Все экранирующие символы начинаются с клавиши обратной косой черты (+ \ +
) в сочетании с другим символом в строке для определенного форматирования заданной строки.
Вот список нескольких распространенных escape-символов:
Escape Character | How it formats |
---|---|
\ |
Backslash |
" |
Double Quote |
\n |
Line Break |
\t |
Tab (horizontal indentation) |
Давайте используем escape-символ для добавления кавычек в пример кавычек выше, но на этот раз мы будем использовать двойные кавычки для обозначения строки:
fmt.Println("Sammy says, \"Hello!\"")
OutputSammy says, "Hello!"
Используя escape-символ `+ \" + `, мы можем использовать двойные кавычки, чтобы заключить строку, содержащую текст, заключенный в кавычки.
Мы можем использовать escape-символ + \ n +
, чтобы разбивать строки, не нажимая клавишу ввода или возврата:
fmt.Println("This string\nspans multiple\nlines.")
OutputThis string
spans multiple
lines.
Мы также можем комбинировать escape-символы. Давайте напечатаем многострочную строку и включим интервал между табуляциями для подробного списка, например:
fmt.Println("1.\tShark\n2.\tShrimp\n10.\tSquid")
Output1. Shark
2. Shrimp
10. Squid
Горизонтальный отступ, снабженный escape-символом + \ t +
, обеспечивает выравнивание во втором столбце в предыдущем примере, делая вывод чрезвычайно читабельным для людей.
Экранирующие символы используются для добавления дополнительного форматирования в строки, которые могут быть трудными или невозможными для достижения. Без escape-символов вы не смогли бы создать строку + Сэмми говорит:" Мне нравится использовать \ `fmt \
package "+`.
Несколько линий
Печать строк в несколько строк может сделать текст более читабельным для людей. С несколькими строками строки могут быть сгруппированы в чистый и упорядоченный текст, отформатированы как буквы или использованы для сохранения разрывов строк стихов или текстов песен.
Чтобы создать строки, которые занимают несколько строк, для заключения строки используются обратные кавычки. Имейте в виду, что, хотя это сохранит возврат строки, оно также создает строковый литерал + raw +
.
`
This string is on
multiple lines
within three single
quotes on either side.
`
Если вы напечатаете это, вы заметите, что есть начальный и конечный возврат:
Output
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."
Хотя обратные кавычки могут упростить печать и чтение длинного текста, если вам нужен интерпретируемый строковый литерал, вам нужно будет использовать двойные кавычки.
Необработанные строковые литералы
Что если мы не хотим специального форматирования в наших строках? Например, нам может потребоваться сравнить или оценить строки компьютерного кода, которые специально используют обратную косую черту, поэтому мы не хотим, чтобы Go использовал его как escape-символ.
Строковый литерал * raw * говорит Go игнорировать все форматирование в строке, включая escape-символы.
Мы создаем необработанную строку, используя обратные кавычки вокруг строки:
fmt.Println(`Sammy says,\"The balloon\'s color is red.\"`)
OutputSammy says,\"The balloon\'s color is red.\"
Создавая необработанную строку с помощью обратных кавычек вокруг заданной строки, мы можем сохранить обратные слеши и другие символы, которые используются в качестве escape-символов.
Заключение
В этом руководстве рассматриваются несколько способов форматирования текста в Go, а также работа со строками. Используя такие методы, как escape-символы или необработанные строки, мы можем гарантировать, что строки нашей программы правильно отображаются на экране, чтобы конечный пользователь мог легко прочитать весь выходной текст.