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

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