Instrucțiunea switch
Când o valoare poate duce la unul dintre mai multe blocuri de cod diferite, instrucțiunea switch îți permite să-l alegi pe cel potrivit.
Dacă ai folosit switch în alte limbaje, versiunea din Go ți se va părea cunoscută, cu o singură diferență: se execută doar cazul care se potrivește. Execuția nu continuă în cazul următor, așa că nu scrii un break la sfârșitul fiecărui caz.
Sintaxa switch cu un singur caz
Go evaluează expresia switch o singură dată, apoi compară rezultatul cu fiecare valoare case. Se execută blocul aflat sub case-ul care se potrivește. Poți adăuga și default, care este opțional, pentru a furniza cod pentru situația în care niciun case nu se potrivește.
Sintaxa Switch
switch expression {
case x:
// code block
case y:
// code block
case z:
...
default:
// code block
}
Exemplu de switch cu un singur caz
Aici, un număr reprezintă o zi a săptămânii, iar switch îl transformă în numele acelei zile. Cu day setat la 4, rezultatul este Thursday.
Exemplu
Ieșire: Program Go și ieșirea capturată
package main
import ("fmt")
func main() {
day := 4
switch day {
case 1:
fmt.Println("Luni")
case 2:
fmt.Println("Marți")
case 3:
fmt.Println("Miercuri")
case 4:
fmt.Println("Joi")
case 5:
fmt.Println("Vineri")
case 6:
fmt.Println("Sâmbătă")
case 7:
fmt.Println("Duminică")
}
}
Cuvântul cheie default
Când niciunul dintre cazuri nu se potrivește, intră în acțiune codul de sub default. În acest exemplu, niciun caz nu acoperă valoarea 8, așa că se afișează mesajul din default.
Exemplu
Ieșire: Program Go și ieșirea capturată
package main
import ("fmt")
func main() {
day := 8
switch day {
case 1:
fmt.Println("Luni")
case 2:
fmt.Println("Marți")
case 3:
fmt.Println("Miercuri")
case 4:
fmt.Println("Joi")
case 5:
fmt.Println("Vineri")
case 6:
fmt.Println("Sâmbătă")
case 7:
fmt.Println("Duminică")
default:
fmt.Println("Nu este o zi a săptămânii")
}
}
Tipul cazurilor trebuie să se potrivească
Fiecare valoare case trebuie să aibă același tip ca expresia switch. Dacă amesteci un alt tip, programul nu se va compila. În acest exemplu, a este un int, așa că acel caz cu șirul de caractere "b" provoacă o eroare.
Exemplu
Ieșire: Program Go și ieșirea capturată
package main
import ("fmt")
func main() {
a := 3
switch a {
case 1:
fmt.Println("a este unu")
case "b":
fmt.Println("a este b")
}
}