DMarlon Studio

Lección 7 · 7 de 20

Elegir con switch · Go

Elija entre varios casos con switch en Go: varios valores por caso, default, switch sin expresión, instrucción inicial y fallthrough.

Go · Elegir con switch en DMarlon Studio: el código del ejemplo y su salida en la terminal

switch compara un valor con varios casos y ejecuta el primero que coincide. switch day mira el valor de day; un caso puede tener varios valores separados por comas, como "Saturday", "Sunday", y default se ejecuta cuando no coincide ninguno.

A diferencia de C o JavaScript, en Go cada caso termina solo: no hace falta break, y la ejecución nunca se cuela en el caso siguiente por descuido.

Un switch sin valor es una forma más limpia de escribir una cadena de if y else if: cada case lleva una condición y gana la primera que sea verdadera. Con 82 puntos no se cumple score >= 90, pero sí score >= 80, y la nota es una B.

Igual que if, switch admite una instrucción inicial: switch level := 2; level. Y si de verdad se quiere seguir en el caso siguiente, hay que pedirlo con fallthrough: tras el nivel 2 se ejecuta también el caso 1, sin comprobarlo.

Código · main.go

package mainimport "fmt"func main() {	day := "Saturday"	// Each case ends on its own: no break needed.	switch day {	case "Saturday", "Sunday":		fmt.Println(day, "is weekend")	default:		fmt.Println(day, "is a working day")	}	// With no value, switch works like a chain of if / else.	score := 82	switch {	case score >= 90:		fmt.Println(score, "-> grade A")	case score >= 80:		fmt.Println(score, "-> grade B")	default:		fmt.Println(score, "-> grade C")	}	// An init statement, and fallthrough to run the next case too.	switch level := 2; level {	case 2:		fmt.Println("Level 2: bonus unlocked")		fallthrough	case 1:		fmt.Println("Level 1: basics done")	}}

Salida · go run main.go

Saturday is weekend
82 -> grade B
Level 2: bonus unlocked
Level 1: basics done

Para recordar

  • switch valor busca el primer case que coincide.
  • Un case admite varios valores separados por comas.
  • No hace falta break; fallthrough pasa al caso siguiente.
  • switch sin valor sustituye a una cadena de if / else if.
  • default se ejecuta si no coincide ningún caso.

Ejercicio

Escriba un switch sobre un número de mes (de 1 a 12) que diga la estación (invierno, primavera, verano u otoño), con varios meses en cada caso y un default para los números no válidos.