Skip to content

Estruturas de controle

O if e else em Go são similares a outras linguagens, contudo não é necessário utilizar parênteses na avaliação de condição (se não precisar fazer alguma operação com ordem de precedência)

package main
import "fmt"
func main() {
numero := 10
if numero > 15 {
fmt.Println("Maior que 15")
} else if numero < 15 {
fmt.Println("Menor que 15")
} else {
fmt.Println("Igual a 15")
}
}

Em Go, podemos criar uma variável durante o processo de verificação condicional da seguinte forma

package main
import "fmt"
func main() {
numero := 10
if outroNumero := numero; outroNumero > 0 {
fmt.Println("Número é maior que 0") // Número é maior que 0
} else {
fmt.Println("Número é menor que 0")
}
}

Ao criar uma variável dessa forma, ela fica limitada ao escopo do if

package main
import "fmt"
func main() {
numero := 10
if outroNumero := numero; outroNumero > 0 {
fmt.Println("Número é maior que 0")
}
fmt.Println(outroNumero) // Erro: outroNumero is not defined
}

O Go também possui a estrutura de controle switch como outras linguagens, que pode ser usada para condicionais mais “complexas”, para uma melhor leitura do código.

Essa é uma forma de fazer

package main
import "fmt"
func diaDaSemana(numero int) string {
switch numero {
case 1:
return "Domingo"
case 2:
return "Segunda-Feira"
case 3:
return "Terça-Feira"
case 4:
return "Quarta-Feira"
case 5:
return "Quinta-Feira"
case 6:
return "Sexta-Feira"
case 7:
return "Sábado"
default:
return "Número inválido"
}
}
func main() {
dia := diaDaSemana(3)
fmt.Println(dia) // Terça-Feira
}

E essa é outra

package main
import "fmt"
func diaDaSemana(numero string) string {
var diaDaSemana string
switch {
case numero == 1:
diaDaSemana = "Domingo"
case numero == 2:
diaDaSemana = "Segunda-Feira"
case numero == 3:
diaDaSemana == "Terça-Feira"
case numero == 4:
diaDaSemana = "Quarta-Feira"
case numero == 5:
diaDaSemana = "Quinta-Feira"
case numero == 6:
diaDaSemana = "Sexta-Feira"
case numero == 7:
diaDaSemana = "Sábado"
default:
diaDaSemana = "Erro - Número inválido"
}
return diaDaSemana
}
func main() {
dia := diaDaSemana(1)
fmt.Println(dia) // Domingo
}

Existe uma cláusula (não muito usada) com o switch chamada de fallthrough, que ao ser executada, pula para a próxima condição (sem avaliar)

package main
import "fmt"
func diaDaSemana(numero string) string {
var diaDaSemana string
switch {
case numero == 1 :
diaDaSemana = "Domingo"
case numero == 2:
diaDaSemana = "Segunda-Feira"
fallthrough
default:
diaDaSemana = "Terça-Feira"
}
}
func main() {
dia := diaDaSemana(2)
fmt.Println(dia) // Terça-Feira
}