Switch Statement in Go

22 Jul, 2019
A switch statement is a multiway branch statement. It provides an efficient way to transfer the execution to different parts of a code based on the value(also called case) of the expression. Go language supports two types of switch statements:
Expression SwitchType Switch
Expression Switch
Type Switch
Expression switch is similar to switch statement in C, C++, Java language. It provides an easy way to dispatch execution to different parts of code based on the value of the expression.
Syntax:
switch optstatement; optexpression{
case expression1: Statement..
case expression2: Statement..
...
default: Statement..
}

Important Points:
Both optstatement and optexpression in the expression switch are optional statements.
If both optstatementand optexpression are present, then a semi-colon(;) is required in between them.
If the switch does not contain any expression, then the compiler assume that the expression is true.
The optional statement, i.e, optstatement contains simple statements like variable declarations, increment or assignment statements, or function calls, etc.
If a variable present in the optional statement, then the scope of the variable is limited to that switch statement.
In switch statement, the case and default statement does not contain any break statement. But you are allowed to use break and fallthrough statement if your program required.
The default statement is optional in switch statement.
If a case can contain multiple values and these values are separated by comma(,).
If a case does not contain any expression, then the compiler assume that te expression is true.
Example 1:
// Go program to illustrate the // concept of Expression switch// statementpackage main  import "fmt"  func main() {          // Switch statement with both     // optional statement, i.e, day:=4    // and expression, i.e, day    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")   }     }
Output:
Thursday
Example 2:
// Go program to illustrate the // concept of Expression switch// statementpackage main  import "fmt"  func main() {    var value int = 2          // Switch statement without an         // optional statement and     // expression   switch {       case value == 1:       fmt.Println("Hello")       case value == 2:       fmt.Println("Bonjour")       case value == 3:       fmt.Println("Namstay")       default:        fmt.Println("Invalid")   }  }
Output:
Bonjour
Example 3:
// Go program to illustrate the // concept of Expression switch// statementpackage main  import "fmt"  func main() {    var value string = "five"          // Switch statement without default statement    // Multiple values in case statement   switch value {       case "one":       fmt.Println("C#")       case "two", "three":       fmt.Println("Go")       case "four", "five", "six":       fmt.Println("Java")   }  }
Output:
Java
Type switch is used when you want to compare types. In this switch, the case contains the type which is going to compare with the type present in the switch expression.
Syntax:
switch optstatement; typeswitchexpression{
case typelist 1: Statement..
case typelist 2: Statement..
...
default: Statement..
}

Important Points:
The optional statement, i.e., optstatement is similar as in the switch expression.
If a case can contain multiple values and these values are separated by comma(,).
In type switch statement, the case and default statement do not contain any break statement. But you are allowed to use break and fallthrough statement if your program required.
The default statement is optional in type switch statement.
The typeswitchexpression is an expression whose result is a type.
If an expression is assigned in typeswitchexpression using := operator, then the type of that variable depends upon the type present in case clause. If the case clause contains two or more types, then the type of the variable is the type in which it is created in typeswitchexpression.
Example:
// Go program to illustrate the // concept of Type switch// statementpackage 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)            }}
Output:
value is of type: <nil>
Go-Control-Flow
Golang
Go Language
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.