C · Intermediário · Inglês · Técnico
goto
Salto incondicional para um rótulo na mesma função. Apesar da má fama, é o idioma de C para centralizar a liberação de recursos quando algo falha no meio.
Onde usar
Em kernels e bibliotecas, funções com vários malloc e fopen usam goto cleanup para liberar tudo em um único lugar, em vez de duplicar free em cada return.
Em código
#include <stdlib.h>
void f(void) {
char *a = malloc(8), *b = malloc(8);
if (!a || !b) goto fim;
/* usa a e b */
fim:
free(a); free(b);
}Exemplos
On any failure we goto cleanup and free everything there.
Em qualquer falha a gente dá goto cleanup e libera tudo lá.
Using goto for error handling is common in C.
Usar goto para tratar erros é comum em C.
Cuidado
Usar goto para montar laços e fluxos tortuosos; o uso aceito é só para saída antecipada e limpeza.
Sinônimos
salto incondicional
Origem
De go to, ir para.