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

134 lines
4.1 KiB
Markdown
Raw Normal View History

2018-10-12 20:00:59 +00:00
---
title: Switch in Go
localeTitle: Включить Go
--- # Включить Go
Оператор переключения Go является альтернативой `if` . Он использует следующий синтаксис:
```go
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:
```go
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:
```go
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!` ,
### То же действие для разных значений
Список значений, разделенных запятыми, для сравнения значения выражения условия с тем же действием.
```go
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.
```go
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, чтобы пропустить код.
```go
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.
```go
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.` ,