Condições de teste com expressões if/else
O fluxo de controle mais básico em qualquer linguagem de programação é a if/else
instrução. Em Go, if/else
as declarações são diretas. Mas você precisa entender algumas diferenças antes de começar a se sentir confortável escrevendo programas Go.
Vamos dar uma olhada na sintaxe Go para if
instruções.
Sintaxe para instruções if
Ao contrário de outras linguagens de programação, em Go, você não precisa de parênteses em condições. A cláusula else
é opcional. Mas os aparelhos ainda são necessários. Além disso, a Go não oferece suporte para declarações ternárias if
para reduzir linhas, então você precisa escrever a declaração completa if
sempre.
Aqui está um exemplo básico de uma if
instrução:
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, os parênteses serão removidos automaticamente quando você salvar o programa.
Declarações compostas if
Go suporta declarações compostas if
. Você pode aninhar instruções usando a else if
instrução. Eis 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")
}
}
Neste código, observe que a variável armazena num
o valor retornado da givemeanumber()
função e a variável está disponível em todas as if
ramificações. No entanto, se você tentar imprimir o num
valor da variável fora do if
bloco, obterá um erro:
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)
}
Quando você executa o programa, a saída de erro tem esta aparência:
# command-line-arguments
./main.go:17:14: undefined: num
Em Go, declarar variáveis dentro if
de blocos é idiomática. É uma maneira de programar de forma eficaz usando uma convenção que é comum no Go.