Строковые литералы (экранированные символы)
| Выражение |
Результат |
Описание |
| "" |
|
Нулевое значение по умолчанию для типа string |
| "Japan 日本" |
Japan 日本 |
Код Go это Unicode текст, кодированный в UTF‑8 |
| "\xe6\x97\xa5" |
日 |
\xNN определяет byte |
| "\u65E5" |
日 |
\uNNNN определяет Unicode значение |
| "\\" |
\ |
Обратный слэш |
| "\"" |
" |
Двойная кавычка |
| "\n" |
|
Новая строка |
| "\t" |
|
Символ табуляции |
| `\xe6` |
\xe6 |
Необработанный строковый литерал |
html.EscapeString("<>") |
<> |
HTML экранирование для <, >, &, ' и " |
url.PathEscape("A B") |
A%20B |
URL %-кодирование net/url |
В необработанных строковых литералах (заключены в обратные кавычки ``) текст интерпретируется буквально и обратные слэши не имеют специального значения.
Конкатенация
| Выражение |
Результат |
Описание |
| "Ja" + "pan" |
Japan |
Конкатенация |
Эквивалетность и сравнение (игнорируя регистр)
| Выражение |
Результат |
Описание |
| "Japan" == "Japan" |
true |
Эквивалетность |
| strings.EqualFold("Japan", "JAPAN") |
true |
Сравнение Unicode с оберткой регистра |
| "Japan" < "japan" |
true |
Сравнение в лексикографическом порядке |
Длина в байтах или рунах
| Выражение |
Результат |
Описание |
| len("日") |
3 |
Длина в байтах |
utf8.RuneCountInString("日") |
1 |
Длина в рунах unicode/utf8 |
| utf8.ValidString("日") |
true |
Проверка UTF-8 ли переданная строка (unicode/utf8) |
Индексирование, создание подстроки, итерация
| Выражение |
Результат |
Описание |
| "Japan"[2] |
'p' |
Байт в позиции 2 |
| "Japan"[1:3] |
ap |
Индексирование байтов |
| "Japan"[:2] |
Ja |
|
| "Japan"[2:] |
pan |
|
Цикл range в Go производит итерацию по UTF-8-кодированным символам (руны):
for i, ch := range "Japan 日本" {
fmt.Printf("%d:%q ", i, ch)
}
// Вывод: 0:'J' 1:'a' 2:'p' 3:'a' 4:'n' 5:' ' 6:'日' 9:'本'
Итерация по байтам производит бессмысленные символы для не-ASCII текста:
s := "Japan 日本"
for i := 0; i < len(s); i++ {
fmt.Printf("%q ", s[i])
}
// Вывод: 'J' 'a' 'p' 'a' 'n' ' ' 'æ' '\u0097' '¥' 'æ' '\u009c' '¬'
Поиск (contains, prefix/suffix, index)
| Выражение |
Результат |
Описание |
| strings.Contains("Japan", "abc") |
false |
abc в Japan? |
| strings.ContainsAny("Japan", "abc") |
true |
a, b или c в Japan? |
| strings.Count("Banana", "ana") |
1 |
не перекрывающиеся экземпляры ana |
| strings.HasPrefix("Japan", "Ja") |
true |
Japan начинается с Ja? |
| strings.HasSuffix("Japan", "pan") |
true |
Japan заканчивается на pan? |
| strings.Index("Japan", "abc") |
-1 |
Индекс первого abc |
| strings.IndexAny("Japan", "abc") |
1 |
Индекс первого a, b или c |
| strings.LastIndex("Japan", "abc") |
-1 |
Индекс последнего abc |
| strings.LastIndexAny("Japan", "abc") |
3 |
Индекс последнего a, b или c |
Замена (uppercase/lowercase, trim)
| Выражение |
Результат |
Описание |
| strings.Replace("foo", "o", ".", 2) |
f.. |
Замена первых двух “o” на “.”. Используйте -1, чтобы заменить все подходящие символы. |
|
f := func(r rune) rune {
return r + 1
}
strings.Map(f, "ab")
|
bc |
Применяет функцию к каждому символу |
| strings.ToUpper("Japan") |
JAPAN |
Приведение к верхнему регистру |
| strings.ToLower("Japan") |
japan |
Приведение к нижнему регистру |
| strings.Title("ja pan") |
Ja Pan |
Приведение к верхнему регистру первых букв |
| strings.TrimSpace(" foo\n") |
foo |
Удаление начального и завершающего пробела |
| strings.Trim("foo", "fo") |
|
Удаление начальных и завершающих f и s |
| strings.TrimLeft("foo", "f") |
oo |
Удаление начальных f |
| strings.TrimRight("foo", "o") |
f |
Удаление завершающих f |
| strings.TrimPrefix("foo", "fo") |
o |
Удаление префикса |
| strings.TrimSuffix("foo", "o") |
fo |
Удаление суффикса |
Разделение по пробелам или запятым
| Выражение |
Результат |
Описание |
| strings.Fields(" a\t b\n") |
["a" "b"] |
Удаление пробелов |
| strings.Split("a,b", ",") |
["a" "b"] |
Удаление разделителя |
| strings.SplitAfter("a,b", ",") |
["a," "b"] |
Сохранение разделителя |
Объединение строки с разделителем
| Выражение |
Результат |
Описание |
| strings.Join([]string{"a", "b"}, ":") |
a:b |
Добавление разделителя |
| strings.Repeat("da", 2) |
dada |
2 копии “da” |
Форматирование и конвертирование
| Выражение |
Результат |
Описание |
| strconv.Itoa(-42) |
"-42" |
Int к string |
| strconv.FormatInt(255, 16) |
"ff" |
Конвертирование к шестнадцетиричной основе |
Sprintf
Функция fmt.Sprintf часто лучший выбор для форматирования данных:
s := fmt.Sprintf("%.4f", math.Pi) // s == "3.1416"
Читайте также:
Канал в Телеграм
Комментариев нет:
Отправить комментарий