Переключение оператора в GO
#GOОператор switch — это многопоточный оператор ветвления. Он обеспечивает эффективный способ переноса выполнения в разные части кода на основе значения (также называемого регистром) выражения. Язык Go поддерживает два типа операторов переключения:
- Выражение Выключатель
- Тип Переключатель
Выражение Выключатель
Выражение switch аналогично выражению switch в C, C ++, языке Java . Он обеспечивает простой способ отправки выполнения в разные части кода в зависимости от значения выражения.
Синтаксис:
switch optstatement; optexpression{
case expression1: Statement..
case expression2: Statement..
...
default: Statement..
}
Важные моменты:
- И optstatement, и optexpression в переключателе выражений являются необязательными операторами.
- Если присутствуют как optstatement, так и optexpression , то между ними требуется точка с запятой (;).
- Если переключатель не содержит какого-либо выражения, то компилятор предполагает, что выражение истинно.
- Необязательный оператор, т. Е. Optstatement, содержит простые операторы, такие как объявления переменных, операторы приращения или присваивания, вызовы функций и т. Д.
- Если переменная присутствует в необязательном операторе, то область действия переменной ограничена этим оператором switch.
- В операторе switch оператор case и default не содержит оператора break. Но вам разрешено использовать операторы break и fallthrough, если ваша программа требуется.
- Оператор по умолчанию является необязательным в операторе switch.
- Если регистр может содержать несколько значений, и эти значения разделяются запятой (,).
- Если регистр не содержит никакого выражения, то компилятор предполагает, что выражение истинно.
Пример 1:
// Перейти к программе, чтобы проиллюстрировать
// концепция переключателя Expression
// заявление
package main
import "fmt"
func main() {
// Переключаем оператор с обоими
// необязательный оператор, т. е. day: = 4
// и выражение, т.е. день
switch day:=4; day{
case 1:
fmt.Println("Monday")
case 2:
fmt.Println("Tuesday")
case 3:
fmt.Println("Wednesday")
case 4:
fmt.Println("Thursday")
case 5:
fmt.Println("Friday")
case 6:
fmt.Println("Saturday")
case 7:
fmt.Println("Sunday")
default:
fmt.Println("Invalid")
}
}
Выход:
Thursday
Пример 2:
// Перейти к программе, чтобы проиллюстрировать
// концепция переключателя Expression
// заявление
package main
import "fmt"
func main() {
var value int = 2
// Переключаем оператор без
// необязательный оператор и
// выражение
switch {
case value == 1:
fmt.Println("Hello")
case value == 2:
fmt.Println("Bonjour")
case value == 3:
fmt.Println("Namstay")
default:
fmt.Println("Invalid")
}
}
Выход:
Bonjour
Пример 3:
// Перейти к программе, чтобы проиллюстрировать
// концепция переключателя Expression
// заявление
package main
import "fmt"
func main() {
var value string = "five"
// Переключение оператора без оператора по умолчанию
// Несколько значений в регистре
switch value {
case "one":
fmt.Println("C#")
case "two", "three":
fmt.Println("Go")
case "four", "five", "six":
fmt.Println("Java")
}
}
Выход:
Java
Тип Переключатель
Переключатель типов используется, когда вы хотите сравнить типы. В этом переключателе регистр содержит тип, который будет сравниваться с типом, представленным в выражении переключателя.
Синтаксис:
switch optstatement; typeswitchexpression{
case typelist 1: Statement..
case typelist 2: Statement..
...
default: Statement..
}
Важные моменты:
- Необязательный оператор, т. Е. Optstatement, аналогичен выражению switch.
- Если регистр может содержать несколько значений, и эти значения разделяются запятой (,).
- В операторе switch типа оператор case и default не содержит оператора break. Но вам разрешено использовать операторы break и fallthrough, если ваша программа требуется.
- Оператор по умолчанию является необязательным в операторе переключения типов.
- Выражение типов является выражением, результатом которого является тип.
- Если выражение назначено в typeswitchexpression с использованием оператора: =, тогда тип этой переменной зависит от типа, присутствующего в предложении case. Если предложение case содержит два или более типов, то тип переменной — это тип, в котором она создается в typeswitchexpression .
Пример:
// Перейти к программе, чтобы проиллюстрировать
// концепция переключателя типа
// заявление
package main
import "fmt"
func main() {
var value interface{}
switch q:= value.(type) {
case bool:
fmt.Println("value is of boolean type")
case float64:
fmt.Println("value is of float64 type")
case int:
fmt.Println("value is of int type")
default:
fmt.Printf("value is of type: %T", q)
}
}
Выход:
value is of type: <nil>