freeCodeCamp/guide/spanish/go/switch/index.md

134 lines
3.3 KiB
Markdown

---
title: Switch in Go
localeTitle: Cambiar en go
---
# Cambiar en go
La declaración de cambio de Go es una alternativa a `if` . Utiliza la siguiente sintaxis:
```go
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:
```go
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:
```go
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.
```go
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.
```go
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.
```go
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.
```go
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.` .