Бесплатный курс по go. Зарегистрируйтесь для отслеживания прогресса →

Go: Строки

Строки в Go объявляются с типом string:

var s string = "hello"

// сокращенная запись
s := "hey"

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

q := `
    SELECT *
    FROM person
    WHERE age > 18
`

Строки можно сравнивать операторами: ==, >, <, <=, >=. Если с == все понятно, то остальные вызывают вопросы. Строка №1 больше строки №2, если строка №2 меньше размером и является подстрокой строки №1. Это свойство часто используется при сортировке массива строк:

"привет" == "привет" // true
"golang" > "go" // 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("пРиВеТ") // "привет"

// озаглавливает первую букву в каждом слове в строке
strings.Title(s string) string
// пример
strings.Title("привет, джон") // "Привет, Джон"

Реализуйте функцию Greetings(name string) string, которая вернет строку-приветствие. Например, при передаче имени Иван, возвращается Привет, Иван!. Учтите, что имя может быть написано с маленькой буквы и содержать пробелы.


Советы


Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе