3.2.8. Uso y maluso de goto

La palabra clave goto está soportada en C++, dado que existe en C. El uso de goto a menudo es considerado como un estilo de programación pobre, y la mayor parte de las veces lo es. Siempre que se utilice goto, se debe revisar bien el código para ver si hay alguna otra manera de hacerlo. En raras ocasiones, goto puede resolver un problema que no puede ser resuelto de otra manera, pero, aún así, se debe considerar cuidadosamente. A continuación aparece un ejemplo que puede ser un candidato plausible:

//: C03:gotoKeyword.cpp
// The infamous goto is supported in C++
#include <iostream>
using namespace std;

int main() {
  long val = 0;
  for(int i = 1; i < 1000; i++) {
    for(int j = 1; j < 100; j += 10) {
      val = i * j;
      if(val > 47000)
        goto bottom; 
        // Break would only go to the outer 'for'
    }
  }
  bottom: // A label
  cout << val << endl;
} ///:~

Listado 3.8. C03/gotoKeyword.cpp


La alternativa sería dar valor a un booleano que sea evaluado en el for externo, y luego hacer un break desde el for interno. De todos modos, si hay demasiados niveles de for o while esto puede llegar a ser pesado.