miércoles, 14 de noviembre de 2018

Estructuras de control en Go: bloques switch

En determinadas situaciones, será necesario evaluar múltiples condiciones para un mismo dato.

En el siguiente ejemplo muestra las etapas de la vida, en base a la edad:

  var edad int = 47

  if edad >= 0 && edad < 3 {
    fmt.Println("Primera infancia")
  } else if edad >= 3 && edad < 6 {
    fmt.Println("Niñez temprana")
  } else if edad >= 6 && edad < 12 {
    fmt.Println("Niñez intermedia")
  } else if edad >= 12 && edad < 18 {
    fmt.Println("Adolescencia")
  } else if edad >= 18 && edad < 35 {
    fmt.Println("Juventud")
  } else if edad >= 35 && edad < 50 {
    fmt.Println("Madurez")
  } else if edad >= 50 && edad < 65 {
    fmt.Println("Adultez")
  } else if edad >= 65 {
    fmt.Println("Vejez o Tercera Edad")
  }

Este código puede ser algo confuso, debido a tanto if, else y a las llaves de cada bloque de código

El siguiente código adapta los bloques if y else de antes, a un formato más legible y más sencillo de entender:

  switch {
    case edad >= 0 && edad < 3:
      fmt.Println("Primera infancia")
    case edad >= 3 && edad < 6:
      fmt.Println("Niñez temprana")
    case edad >= 6 && edad < 12:
      fmt.Println("Niñez intermedia")
    case edad >= 12 && edad < 18:
      fmt.Println("Adolescencia")
    case edad >= 18 && edad < 35:
      fmt.Println("Juventud")
    case edad >= 35 && edad < 50:
      fmt.Println("Madurez")
    case edad >= 50 && edad < 65:
      fmt.Println("Adultez")
    case edad >= 65:
      fmt.Println("Vejez o Tercera Edad")
  }

Go ofrece un tipo de bloque condicional, llamado switch, el cual permite evaluar diferentes casos (o condiciones), mediante la sentencia case. Cada caso evalúa una condición y, en el caso de ser cierta (true), abrirá un bloque de código que se ejecutará en tal caso. Dicho bloque no requiere el uso de las llaves.

Una de las ventajas del bloque switch es que podemos especificar al principio la variable a evaluar, y en cada case solamente indicamos el valor a evaluar.

El siguiente ejemplo evalúa los posibles valores de la variable region, a fin de poder determinar de qué región se trata.

  var region string = "EU"

  switch region {
    case "CH":   // region == "CH"
      fmt.Println("China")
    case "LAT":
      fmt.Println("Latino América")
    case "RU":
      fmt.Println("Rusia")
    case "US":
      fmt.Println("Estados Unidos")
    default:
      fmt.Println("Europa")
  }

En este tipo de evaluación, la condición será siempre de igualdad, es decir, que cada caso evaluará un valor concreto (variable == valor).

La cláusula default permite definir un caso por defecto, es decir, un caso que aplica cuando el valor de la variable no se corresponde con ninguno de los anteriores case.

Para evaluar varios valores en un mismo case, éstos se especifican separados por comas.

  var diaSemana int = 8

  switch diaSemana {
    case 1, 2, 3, 4, 5:
      fmt.Println("Es día laboral")
    case 6, 7:
      fmt.Println("Es fin de semana")
    default:
      fmt.Printf("Día %d no es válido", diaSemana)
  }

Enlaces de interés

1 comentario:

  1. Bet365 Casino $5 No Deposit Bonus Code (2021)
    Bet365 Casino offers 정읍 출장안마 new players 용인 출장안마 a $5 no 경상북도 출장샵 deposit bonus. New players can 동두천 출장안마 claim up to $600 문경 출장안마 deposit bonus when registering at Bet365 Casino.

    ResponderEliminar