3.3 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Switch in Go | Cambiar en go |
Cambiar en go
La declaración de cambio de Go es una alternativa a if . Utiliza la siguiente sintaxis:
fruit := "apple"
switch fruit {
case "banana":
fmt.Printf("Yellow and long.")
case "apple":
fmt.Printf("Red and round.")
case "lemon":
fmt.Printf("Yellow and round.")
}
La salida de este programa sería Red and round. .
Primero, declaramos la fruit variable como apple . Luego usamos la variable fruit como la expresión de condición. Go compara el valor de la fruit con los cases proporcionados así:
- fruta == "plátano" (falso)
- fruta == "manzana" (verdadero)
Note que el lemon no fue probado. Después de que una evaluación devuelve verdadero, no se intentan más casos.
Como con if , puede declarar variables temporales en la expresión de condición del switch:
switch fruit := "apple"; fruit {
case "banana":
fmt.Printf("Yellow and long.")
case "apple":
fmt.Printf("Red and round.")
case "lemon":
fmt.Printf("Yellow and round.")
}
La fruit variable no será accesible fuera de la instrucción switch.
Predeterminado y otros casos
Defecto
La palabra clave default es el caso alternativo cuando ningún otro caso devuelve verdadero:
switch fruit := "grape"; fruit {
case "banana":
fmt.Printf("Yellow and long.")
case "apple":
fmt.Printf("Red and round.")
case "lemon":
fmt.Printf("Yellow and round.")
default:
fmt.Printf("New fruit: %s!", fruit)
}
La salida de este programa sería New fruit: grape! .
Misma acción para diferentes valores.
Una lista de valores separados por comas para comparar el valor de expresión de condición con la misma acción.
switch fruit := "lemon"; fruit {
case "banana", "lemon":
fmt.Printf("Yellow fruit.")
default:
fmt.Printf("This fruit is a color different than yellow.")
}
Salida: Yellow fruit. .
Sin expresión
Un interruptor sin expresión significa switch true . Esta es una versión alternativa a una cadena else-if.
fruit := "banana"
switch {
case fruit == "banana":
fmt.Printf("Yellow and long.")
default:
fmt.Printf("This is not a banana.")
}
Esto evalúa true == (fruit == "banana") , simpliado a true == true , que devuelve true.
Descanso
Puede romper el código en una instrucción de cambio para omitir cualquier otro código.
appleColor := "green"
switch fruit := "apple"; fruit {
case "banana":
fmt.Printf("Yellow and long.")
case "apple":
if appleColor == "green" {
fmt.Printf("This apple is green!")
break
}
fmt.Printf("This apple is tasty!")
case "lemon":
fmt.Printf("Yellow and round.")
}
Salida: ¡ This apple is green! .
Caer a través
Pase al siguiente caso, si su condición se evalúa como verdadera.
switch fruit := "banana"; fruit {
case "banana":
fmt.Printf("Yellow and long.")
fallthrough
case "apple":
fmt.Printf("Red and round.")
case "lemon":
fmt.Printf("Yellow and round.")
}
Salida: Yellow and long. Y Red and round. .