3.3 KiB
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.
.