freeCodeCamp/guide/russian/go/switch/index.md

4.1 KiB
Raw Blame History

title localeTitle
Switch in Go Включить Go

Включить Go

Оператор переключения Go является альтернативой if . Он использует следующий синтаксис:

fruit := "apple" 
 switch fruit { 
    case "banana": 
        fmt.Printf("Yellow and long.") 
    case "apple": 
        fmt.Printf("Red and round.") 
    case "lemon": 
        fmt.Printf("Yellow and round.") 
 } 

Выход этой программы будет Red and round. ,

Сначала мы объявляем переменную fruit как apple . Затем мы используем переменную fruit как выражение условия. Go сравнивает ценность fruit с такими cases как:

  • плод == "банан" (ложный)
  • фрукты == "яблоко" (правда)

Уведомление о lemon не было проверено. После того, как оценка вернётся, больше не рассматриваются случаи.

Как и в if , вы можете объявлять временные переменные в выражении условия switch:

switch fruit := "apple"; fruit { 
    case "banana": 
        fmt.Printf("Yellow and long.") 
    case "apple": 
        fmt.Printf("Red and round.") 
    case "lemon": 
        fmt.Printf("Yellow and round.") 
 } 

Переменные fruit не будут доступны за пределами оператора switch.

Стандартные и другие случаи

По умолчанию

Ключевое слово по default - это случай падения, когда другие случаи не возвращают true:

switch fruit := "grape"; fruit { 
    case "banana": 
        fmt.Printf("Yellow and long.") 
    case "apple": 
        fmt.Printf("Red and round.") 
    case "lemon": 
        fmt.Printf("Yellow and round.") 
    default: 
        fmt.Printf("New fruit: %s!", fruit) 
 } 

Результатом этой программы будет New fruit: grape! ,

То же действие для разных значений

Список значений, разделенных запятыми, для сравнения значения выражения условия с тем же действием.

switch fruit := "lemon"; fruit { 
    case "banana", "lemon": 
        fmt.Printf("Yellow fruit.") 
    default: 
        fmt.Printf("This fruit is a color different than yellow.") 
 } 

Выход: Yellow fruit. ,

Без выражения

Переключатель без выражения означает, что значение switch true . Это альтернативная версия в цепочке else-if.

fruit := "banana" 
 switch { 
    case fruit == "banana": 
        fmt.Printf("Yellow and long.") 
    default: 
        fmt.Printf("This is not a banana.") 
 } 

Это оценивает значение true == (fruit == "banana") , упрощенное к true == true , которое возвращает true.

Перерыв

Вы можете сломать код в инструкции switch, чтобы пропустить код.

appleColor := "green" 
 switch fruit := "apple"; fruit { 
    case "banana": 
        fmt.Printf("Yellow and long.") 
    case "apple": 
        if appleColor == "green" { 
            fmt.Printf("This apple is green!") 
            break 
        } 
        fmt.Printf("This apple is tasty!") 
    case "lemon": 
        fmt.Printf("Yellow and round.") 
 } 

Выход: This apple is green! ,

Провалиться

Переходите к следующему случаю, оценивает ли его условие значение true.

switch fruit := "banana"; fruit { 
    case "banana": 
        fmt.Printf("Yellow and long.") 
        fallthrough 
    case "apple": 
        fmt.Printf("Red and round.") 
    case "lemon": 
        fmt.Printf("Yellow and round.") 
 } 

Выход: Yellow and long. И Red and round. ,