MyTetra Share
Делитесь знаниями!
Конструкция switch/case в Golang
Время создания: 10.11.2020 14:19
Автор: br0ke
Текстовые метки: go, golang, condition, conditional, construction, block, switch, case, fall, through, fallthrough
Раздел: Информационные технологии - Golang
Запись: and-semakin/mytetra_data/master/base/1604999960rkr42yqtv8/text.html на raw.githubusercontent.com

Во многих случаях удобнее записывать условные выражения при помощи конструкции switch/case. Сравнение переменной с разными значениями:


switch i {

case 0: fmt.Println("Zero")

case 1: fmt.Println("One")

case 2: fmt.Println("Two")

case 3: fmt.Println("Three")

case 4: fmt.Println("Four")

case 5: fmt.Println("Five")

default: fmt.Println("Unknown Number")

}


Обход возможных значений осуществляется сверху вних, и выбирается первое значение, которое сошлось с выражением. Если не подошло ни одно из значений, то будет выполнен блок default (при его наличии).


Отличия от С-подобных языков: в Go каждый блок case по умолчанию отделён от других, и поэтому нет нужды каждый такой блок заканчивать ключевым словом break. Если же нужно продолжить выполнение следующего блока, то в текущем case нужно явно написать fallthrough -- таком случае следующий блок выполнится независимо от того, истинно ли его условие или нет.


Также при помощи case можно не только сравнивать значение конкретной переменной, но и организовывать проверку произвольных выражений:


var c uint32

fmt.Scan(&c)


switch {

case 1 <= c && c <= 9:

fmt.Println("от 1 до 9")

case 100 <= c && c <= 250:

fmt.Println("от 100 до 250")

case 1000 <= c && c <= 6000:

fmt.Println("от 1000 до 6000")

}


Так же как и в if, в switch/case можно написать выражение, которое будет выполнено прямо перед проверкой условий. Его нужно отделить от основного выражения через ; (точку с запятой).

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования