Строки часто состоят из текста, и нам нужно контролировать читаемость этих строк посредством пунктуации, разрывов строк и отступов.
В этом обучающем модуле мы рассмотрим несколько способов работы со строками Go, призванных обеспечить правильность форматирования всего выводимого текста.
Вначале определим разницу между литералями строк и значениями строк. Литераль строк — это то, что мы видим в исходном коде компьютерной программы, включая кавычки. Значение строки — это то, что мы видим, когда вызываем функцию fmt.Println
и запускаем программу.
В простой программе Hello, World! литераль строки будет выглядеть как "Hello, World!"
, а значением строки будет Hello, World!
без кавычек. Значение строки — это то, что мы видим в окне терминала после запуска программы Go.
Однако для некоторых значений строк могут требоваться кавычки, в частности в случае с цитатами. Поскольку литерали строк и значения строк не эквивалентны, часто требуется добавлять в литерали строк дополнительное форматирование, чтобы значения строк отображались ожидаемым образом.
В Go можно использовать одинарные кавычки (`
) или двойные кавычки ("
), поэтому мы можем легко вставлять цитаты в строку, выделяя их двойными кавычками, в то время как сама строка выделена одинарными кавычками:
`Sammy says, "Hello!"`
Также вы можете использовать одинарные кавычки и заключить строку в двойные кавычки:
"Sammy likes the `fmt` package for formatting strings.."
Кроме того, комбинирование одинарных и двойных кавычек позволяет контролировать отображение символов кавычек и одинарных кавычек в строках.
Важно помнить, что при использовании одинарных кавычек в Go создается чистая
литераль строки, а при использовании двойных кавычек — интерпретированная
литераль строки. Чтобы узнать больше о разнице между ними, ознакомьтесь с руководством Введение в работу со строками в Go.
Также для форматирования строк используются символы перехода. Символы перехода интерпретируются кодом как наличие особого значения у следующего за ними символа. Символы перехода начинаются с обратной косой черты (\
), за которой идет другой символ строки, в результате чего строка имеет определенный формат.
Далее приведен перечень нескольких распространенных символов перехода:
Символ перехода | Формат |
---|---|
\\ | Обратная косая черта |
\" | Двойные кавычки |
\n | Разрыв строки |
\t | Табуляция (горизонтальный отступ) |
Используем символ перехода, чтобы добавить символы кавычек в приведенный выше пример, при этом сейчас мы используем двойные кавычки для обозначения строки:
fmt.Println("Sammy says, \"Hello!\"")
OutputSammy says, "Hello!"
С помощью символа перехода \"
мы можем использовать двойные кавычки, чтобы заключить строку с текстом в двойные кавычки.
Символ перехода \n
можно использовать для разрыва строк без нажатия клавиши Enter (Return):
fmt.Println("This string\nspans multiple\nlines.")
OutputThis string
spans multiple
lines.
Символы перехода при желании можно комбинировать. Например, мы можем вывести список позиций, напечатав строку из нескольких рядов и добавив разделители в виде табуляции:
fmt.Println("1.\tShark\n2.\tShrimp\n10.\tSquid")
Output1. Shark
2. Shrimp
10. Squid
Горизонтальные отступы, создаваемые за счет символа перехода \t
, обеспечивают выравнивание со вторым столбцом в предыдущем примере, что делает выводимый текст удобным для чтения.
Символы перехода используются для добавления в строки дополнительного форматирования, которого иным образом достичь сложно или невозможно. Без символов перехода вы не сможете построить строку Сэмми говорит: "Мне нравится использовать пакет `fmt`"
.
Многострочная печать строк делает текст более удобным для чтения. Размещение строк в нескольких рядах делает текст более понятным и упорядоченным, позволяет форматировать его как письмо или сохранить разрывы строк в стихотворении или тексте песни.
Для создания строк, отображаемых на нескольких рядах, их нужно заключить в одинарные кавычки. Помните, что хотя при этом сохраняются символы возврата строки, создаваться будут чистые
литерали строки.
`
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 использовал этот символ как символ перехода.
Чистая литераль строки указывает Go игнорировать все форматирование строки, включая символы перехода.
Мы можем создать чистую строку, заключив строку в одинарные кавычки:
fmt.Println(`Sammy says,\"The balloon\'s color is red.\"`)
OutputSammy says,\"The balloon\'s color is red.\"
Построение чистой строки с помощью одинарных кавычек вокруг нее позволяет сохранить в тексте символы обратной косой черты и другие символы, которые используются в качестве символов перехода.
В этом руководстве мы рассмотрели несколько способов форматирования текста в Go при работе со строками. Используя символы перехода и чистые строки, мы можем обеспечить правильный вывод текста на экране, чтобы конечный пользователь мог легко его прочитать.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!