One place for hosting & domains

      Usar instrucciones break y continue cuando se trabaja con bucles en Go


      Introducción

      Usar bucles for en Go le permite automatizar y repetir tareas de forma eficiente.

      Aprender a controlar el funcionamiento y el flujo de los bucles hará posible una lógica personalizada en su programa. Puede controlar sus bucles con las instrucciones break y continue.

      Instrucción break

      En Go, la instrucción break finaliza la ejecución del bucle actual. Una instrucción break casi siempre se sincroniza con una instrucción condicional if.

      Veamos un ejemplo en el que se utiliza la instrucción break en un bucle for:

      break.go

      package main
      
      import "fmt"
      
      func main() {
          for i := 0; i < 10; i++ {
              if i == 5 {
                  fmt.Println("Breaking out of loop")
                  break // break here
              }
              fmt.Println("The value of i is", i)
          }
          fmt.Println("Exiting program")
      }
      

      Este pequeño programa crea un bucle for que se iterará mientras i sea inferior a 10.

      En el bucle for, hay una instrucción if. La instrucción if prueba la condición de i para ver si el valor es inferior a 5. Si el valor de i no es igual a 5, el bucle continúa e imprime el valor de i. Si el valor de i es igual a 5, el bucle ejecuta la instrucción break, imprime Breaking out of loop y deja de ejecutarse. Al final del programa, imprimimos Exiting program para indicar que cerramos el bucle.

      Cuando ejecutemos este código, el resultado será el siguiente:

      Output

      The value of i is 0 The value of i is 1 The value of i is 2 The value of i is 3 The value of i is 4 Breaking out of loop Exiting program

      Esto muestra que una vez que se evalúa el entero i como equivalente a 5, el bucle se rompe porque se indica al programa que lo haga con la instrucción break.

      Bucles anidados

      Es importante recordar que la instrucción break solo detendrá la ejecución del bucle más interno en el que se invoca. Si tiene un conjunto de bucles anidados, necesitará una instrucción break para cada bucle, si lo desea.

      nested.go

      package main
      
      import "fmt"
      
      func main() {
          for outer := 0; outer < 5; outer++ {
              if outer == 3 {
                  fmt.Println("Breaking out of outer loop")
                  break // break here
              }
              fmt.Println("The value of outer is", outer)
              for inner := 0; inner < 5; inner++ {
                  if inner == 2 {
                      fmt.Println("Breaking out of inner loop")
                      break // break here
                  }
                  fmt.Println("The value of inner is", inner)
              }
          }
          fmt.Println("Exiting program")
      }
      

      En este programa, hay dos bucles. Aunque ambos bucles se repiten 5 veces, cada uno tiene una instrucción if condicional con una instrucción break. El bucle externo se interrumpirá si el valor de outer es igual a 3. El bucle interno se interrumpirá si el valor de inner es 2.

      Si ejecutamos el programa, veremos el siguiente resultado:

      Output

      The value of outer is 0 The value of inner is 0 The value of inner is 1 Breaking out of inner loop The value of outer is 1 The value of inner is 0 The value of inner is 1 Breaking out of inner loop The value of outer is 2 The value of inner is 0 The value of inner is 1 Breaking out of inner loop Breaking out of outer loop Exiting program

      Observe que cada vez que se interrumpe el bucle interno, no sucede lo mismo con el externo. Esto es porque break solo interrumpirá el bucle más interno desde el que se invoca.

      Hemos visto cómo el uso de break detendrá la ejecución de un bucle. A continuación, veremos la forma de continuar la iteración de un bucle.

      Instrucción continue

      La instrucción continue se usa cuando se busca omitir la parte restante del bucle, volver a la parte superior de este y continuar con una nueva iteración.

      Como en el caso de la instrucción break, la instrucción continue se utiliza comúnmente con una instrucción if condicional.

      Usando el mismo programa de bucle for que en la sección Instrucción break, emplearemos la instrucción continue en vez de break:

      continue.go

      package main
      
      import "fmt"
      
      func main() {
          for i := 0; i < 10; i++ {
              if i == 5 {
                  fmt.Println("Continuing loop")
                  continue // break here
              }
              fmt.Println("The value of i is", i)
          }
          fmt.Println("Exiting program")
      }
      

      La diferencia al usar la instrucción continue en vez de una instrucción break radica en que nuestro código continuará a pesar de la interrupción cuando la variable i se evalúe como equivalente a 5. Veamos el resultado:

      Output

      The value of i is 0 The value of i is 1 The value of i is 2 The value of i is 3 The value of i is 4 Continuing loop The value of i is 6 The value of i is 7 The value of i is 8 The value of i is 9 Exiting program

      Aquí vemos que la línea The value of i is 5 nunca se aparece en el resultado, pero el bucle continúa después de ese punto para imprimir líneas para los números 6 a 10 antes de cerrarse.

      Puede usar la instrucción continue para evitar código condicional profundamente anidado o para optimizar un bucle eliminando los casos frecuentes que desee rechazar.

      La instrucción continue hace que un programa omita determinados factores que surgen dentro de un bucle, pero luego continuará con resto de este.

      Conclusión

      Las instrucciones break y continue en Go le permitirán usar los bucles for de forma más eficaz en su código.



      Source link