Le goto peut être utiliser pour améliorer la lisibilité (on evite de ce trainer une variable qui indique l'état de la fonction).
Exemple pour la gestion d'erreur :
int toto(void) {
int all_ok = 0 ;
if ( .... == probleme ) {
goto erreur ;
}
.
.
.
if ( ... == probleme ) {
goto erreur ;
}
.
.
.
return ok ;
erreur:
// boulot sur erreur
return pas_ok ;
}
Visual Basic propose l'excellent "on error goto".
Exemple pour sortir de beaucoups de boucle imbriqués.
qqc * chercher(...) {
for(....) {
while {
for(....) {
if (c'est presque le bon) {
.
.
.
if (c'est le bon) {
goto trouve ;
}
}
}
for(....) {
if (c'est le bon) {
goto trouve ;
}
}
}
}
return NULL ;
trouve:
// faire qqc
return qqc ;
}
P.S.: désolé pour ce code pas indenté mais dacode n'autorise pas la borne "<pre>" ni les " "
[^] # vive le goto (parfois)
Posté par Anonyme . En réponse à la dépêche Comparatif jsp/php. Évalué à 0.
Exemple pour la gestion d'erreur :
int toto(void) {
int all_ok = 0 ;
if ( .... == probleme ) {
goto erreur ;
}
.
.
.
if ( ... == probleme ) {
goto erreur ;
}
.
.
.
return ok ;
erreur:
// boulot sur erreur
return pas_ok ;
}
Visual Basic propose l'excellent "on error goto".
Exemple pour sortir de beaucoups de boucle imbriqués.
qqc * chercher(...) {
for(....) {
while {
for(....) {
if (c'est presque le bon) {
.
.
.
if (c'est le bon) {
goto trouve ;
}
}
}
for(....) {
if (c'est le bon) {
goto trouve ;
}
}
}
}
return NULL ;
trouve:
// faire qqc
return qqc ;
}
P.S.: désolé pour ce code pas indenté mais dacode n'autorise pas la borne "<pre>" ni les " "
Dacode pourrait autoriser "<pre>" mais dans ce cas utiliser la fonction wordwrap() (cf:http://www.php.net/manual/en/function.wordwrap.php(...)) pour éviter les lignes trop longues.