В чем разница между backticks (``) и двойными кавычками ("") в golang?
В чем разница между backticks (``) и двойными кавычками ("") в golang?
Ответ 1
В кавычках ""
вам нужно экранировать новые строки, табуляции и другие символы, которые не нужно экранировать в обратных галочках ''
. Если вы поместите разрыв строки в строку с обратным тэгом, он будет интерпретирован как символ '\n'
, см. Https://golang.org/ref/spec#String_literals
Таким образом, если вы скажете \n
в обратной строке, это будет интерпретировано как буквенный обратный слеш и символ n.
Ответ 2
Обратные строки являются аналогами многострочной необработанной строки в Python или Scala: r""" text """
или в JavaScript
String.raw'Hi\u000A!'
Они могут
-
Разбить несколько строк
-
Игнорировать специальные символы
Они полезны:
-
Для размещения большого текста внутри
-
Для регулярных выражений, когда у вас много обратной косой черты
-
Для строгих тегов ставить двойные кавычки.
Ответ 3
Строковые литералыRaw - это последовательности символов между обратными окнами. Обратные черточки ('\') не имеют особого значения, а символы Возврат каретки ('\ r') внутри необработанных строковых литералов отбрасываются из необработанного значения строки.
Строковые литералыИнтерпретированные - это последовательности символов между двойными кавычками ( "\ r", "\n",...)
источник: http://ispycode.com/GO/Strings/Raw-string-literals
Ответ 4
''
представляет неинтерпретированные строки, а ""
- интерпретируемую строку.
Значение необработанного строкового литерала (строки без интерпретации) - это строка, состоящая из символов без интерпретации (неявно в кодировке UTF-8) между кавычками
Интерпретируемые строковые литералы являются символьными последовательностями между двойными кавычками, как в "баре". В кавычках может появляться любой символ, кроме новой строки и неэкранированной двойной кавычки.
PS: выделенные курсивом слова - мои