Testar condições com expressões if/else
O fluxo de controle mais básico em qualquer linguagem de programação é a instrução if/else
. No Go, as instruções if/else
são simples. Mas você precisa entender algumas diferenças antes de começar a se sentir à vontade para escrever programas com o Go.
Vamos dar uma olhada na sintaxe Go para instruções if
.
Sintaxe para instruções if
Ao contrário de outras linguagens de programação, no Go, não é preciso usar parênteses em condições. A cláusula else
é opcional. Porém as chaves “{ }” ainda são necessárias. Além disso, o Go não oferece suporte para instruções if
ternárias para redução de linhas; portanto, é preciso escrever a instrução if
completa toda vez.
Veja um exemplo básico de uma instrução if
:
package main
import "fmt"
func main() {
x := 27
if x%2 == 0 {
fmt.Println(x, "is even")
}
}
No Visual Studio Code, se a sintaxe Go incluir parênteses em condições, estes serão removidos automaticamente quando você salvar o programa.
Instruções if compostas
O Go oferece suporte a instruções if
compostas. É possível aninhar instruções usando a instrução else if
. Aqui está um exemplo:
package main
import "fmt"
func givemeanumber() int {
return -1
}
func main() {
if num := givemeanumber(); num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has only one digit")
} else {
fmt.Println(num, "has multiple digits")
}
}
Nesse código, observe que a variável num
armazena o valor retornado da função givemeanumber()
e que a variável está disponível em todas as ramificaçõesif
. No entanto, se você tentar imprimir o valor da variável num
fora do bloco if
, receberá um erro como o seguinte:
package main
import "fmt"
func somenumber() int {
return -7
}
func main() {
if num := somenumber(); num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
fmt.Println(num)
}
Ao executar o programa, a saída de erro terá a seguinte aparência:
# command-line-arguments
./main.go:17:14: undefined: num
No Go, declarar variáveis em blocos if
é idiomático. É uma maneira de programar com eficiência usando uma convenção comum no Go.