В Golang, как и в большинстве других языков программирования, есть оператор switch . Оператор switch в Golang позволяет вычислять переменную или выражение в нескольких случаях и часто используется, когда написание нескольких операторов if-else делает код некрасивым и повторяющимся.

В Go оператор switch представляет собой многонаправленный оператор ветвления, который эффективно направляет выполнение на основе значения (или типа) выражения. В Go существует два основных типа операторов switch :
- Переключатель выражений
- Тип переключателя
Например:
package main
import "fmt"
func main() {
day := 4
switch 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")
default:
fmt.Println("Invalid day")
}
}
Синтаксис оператора switch в Golang
switch optstatement; optexpression {
case expression1:
// Khối code
case expression2: # Expression Switch
// Khối code
default:
// Khối code
}
switch var := interfaceValue.(type) {
case type1:
// Khối code
case type2: # Type Switch
// Khối code
default:
// Khối code
}
Переключатель выражений
Expression Switch оценивает выражение и переключается на случай на основе значения этого выражения. Если выражение не у��азано, по умолчанию используется значение true .
Синтаксис
switch optstatement; optexpression {
case expression1:
// Khối code
case expression2:
// Khối code
default:
// Khối code
}
optstatement: Необязательный оператор (например, объявление переменной).
optexpression: Необязательное выражение (если не указано, по умолчанию принимается значение true ).
Пример с необязательной командой
Здесь вводится необязательный оператор, объявляющий переменную дня . Затем оператор switch оценивает день в соответствии с различными случаями.
package main
import "fmt"
func main() {
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")
default:
fmt.Println("Invalid day")
}
}
Результат:
Thursday
Пример с необязательным выражением
Если выражение не указано, оператор switch в Golang будет считать, что выражение истинно. Это позволяет нам использовать булевы условия в операторах case.
package main
import "fmt"
func main() {
day := 4
switch {
case day == 1:
fmt.Println("Monday")
case day == 4:
fmt.Println("Thursday")
case day > 5:
fmt.Println("Weekend")
default:
fmt.Println("Invalid day")
}
}
Результат
Thursday
Тип переключателя
Type Switch используется для перехода по типу значения интерфейса, а не по его значению. Это особенно полезно при работе с переменными неизвестного типа.
Синтаксис
switch var := interfaceValue.(type) {
case type1:
// Khối code
case type2:
// Khối code
default:
// Khối code
}
Например:
В этом примере используется та же переменная day , но заключенная в interface{} для иллюстрации приведения типов.
package main
import "fmt"
func main() {
var day interface{} = 4
switch v := day.(type) {
case int:
switch v {
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")
default:
fmt.Println("Invalid day")
}
default:
fmt.Printf("Unknown type: %T\n", v)
}
}
Результат:
Thursday