Usando goto e label em Go

Veja o vídeo desse arquivo aqui

goto e label em Go

A instrução goto tem uma má fama que vem do tempo do BASIC quando era usada indiscriminadamente e acabava tornando o código impossível de ler. Em linguagens modernas entretanto é uma instrução perfeitamente válida e desde que usada com critério pode ajudar a tornar seu código mais limpo.

Em Golang de goto as instruções break e continue também aceitam labels, isso é muito útil para quando por exemplo se quer sair de um for aninhado em outro for ou especificar para qual dos fors aninhados se quer fazer continue.

Veja os exemplos de goto e várias outras coisas que aceitam label no nosso Grupo de Estudos de Go

Regras para usar labels

Golang tem algumas regras para usar com goto, continue e break:

É uma instrução valida

Quando se programa em assembly logo se aprende que para a maquina não existem essas abstrações que as linguagens de programação modernas nos oferecem, basicamente a única coisa que se tem são alguns tipos de saltos, o processador simplesmente salta para um determinado endereço de memória e continua executando o código de maquina que esteja armazenado lá.

Quando o compilador transforma o nosso belo código em linguagem de maquina qualquer instrução de salto como if, for, goto, etc. invariavelmente vão virar alguma variação da instrução jmp que dependendo do estado da maquina vai saltar para o endereço indicado na própria instrução ou apenas prosseguir ignorando o salto.

Ignorar um recurso da linguagem é uma escolha do programador mas fazer isso sem um forte alicerce do porque usar ou não usar o recurso é muito ruim.

Eu espero que ninguém tenha sido devorado por velociraptors enquanto lia esse artigo.

Cesar Gimenes