Как отформатировать строки в Go

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

В этом руководстве мы рассмотрим некоторые способы работы со строками 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-символы или необработанные строки, мы можем гарантировать, что строки нашей программы правильно отображаются на экране, чтобы конечный пользователь мог легко прочитать весь выходной текст.