Condições de teste com expressões if/else

Concluído

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.