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

Go: Альтернативная условная конструкция

В Go присутствует единственная альтернатива if — конструкция switch. Для этой конструкции используется стандартный синтаксис, но логика работы отличается от С-подобных языков. Когда срабатывает условие какого-либо case, программа выполняет блок и выходит из конструкции switch без необходимости писать break:

x := 10

switch x {
    default: // default всегда выполняется последним независимо от расположения в конструкции
        fmt.Println("default case")
    case 10:
        fmt.Println("case 10")
}

Output:

case 10

Однако при необходимости можно реализовать логику С-подобных языков и «провалиться» в следующий case:

x := 10

switch { // выражение отсутствует. Для компилятора выглядит как: switch true
    default:
        fmt.Println("default case")
    case x == 10:
        fmt.Println("equal 10 case")
        fallthrough
    case x <= 10:
        fmt.Println("less or equal 10 case")
}

Output:

equal 10 case
less or equal 10 case

Задание

Реализуйте функцию ModifySpaces(s, mode string) string, которая изменяет строку s в зависимости от переданного режима mode. Подробности в примере:

// когда передается mode "dash", нужно заменить все пробелы на дефисы "-"
ModifySpaces("hello world", "dash") // hello-world

// когда передается mode "underscore", нужно заменить все пробелы на нижние подчеркивания "_"
ModifySpaces("hello world", "underscore") // hello_world

// когда передается неизвестный или пустой mode, заменяем все пробелы звездочки "*"
ModifySpaces("hello world", "unknown") // hello*world
ModifySpaces("hello world", "") // hello*world

Советы


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