Go: Строки
Строки в Go объявляются с типом string
:
var s string = "hello"
// сокращенная запись
s := "hey"
Практически всегда для строк используются двойные кавычки. Однако они не подходят, когда нужно написать несколько строк. Для этого используются обратные кавычки:
q := `
SELECT *
FROM person
WHERE age > 18
`
Строки можно сравнивать операторами: ==
, >
, <
, <=
, >=
, где строки сравниваются посимвольно в лексическом порядке и по длине. Это свойство часто используется при сортировке массива строк:
"привет" == "привет" // true
"golang" > "go" // true
"golang" > "lang" // false
"go" > "foobar" // true
Базовые операции со строками в любом языке — это конкатенация и интерполяция. Конкатенация осуществляется с помощью знака +
:
"hello " + "world" // "hello world"
В Go нет привычной интерполяции, как в динамических языках. Она реализуется через форматирующую функцию fmt.Sprintf
:
username := "Ivan"
greetings := fmt.Sprintf("hello, %s", username) // "hello, Ivan"
Узнать длину строки можно с помощью встроенной функции len
:
len("go") // 2
// будьте внимательны! Функция считает кол-во байт, а не кол-во символов
len("го") // 4
Задание
Для работы со строками часто используется стандартная библиотека strings
. В данном задании вам понадобятся следующие функции:
// обрезает символы, переданные вторым аргументом, с обеих сторон строки
Trim(s, cutset string) string
// пример
strings.Trim(" hello ", " ") // "hello"
// преобразует все буквы в строке в нижний регистр
strings.ToLower(s string) string
// пример
strings.ToLower("пРиВеТ") // "привет"
// озаглавливает первую букву в каждом слове в строке с указанием языка
cases.Title(language.Russian).String(s string) string
// пример
cases.Title(language.Russian).String("привет, джон") // "Привет, Джон"
Реализуйте функцию Greetings(name string) string
, которая вернет строку-приветствие. Например, при передаче имени Иван
, возвращается Привет, Иван!
. Учтите, что имя может быть написано в разном регистре и содержать пробелы.
Упражнение не проходит проверку — что делать? 😶
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет 🤨
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя 🤔
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно 🙄
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.