Testovací podmínky s výrazy if/else

Dokončeno

Tento příkaz představuje nejzásadnější tok řízení v libovolném programovacím if/else jazyce. Příkazy v go if/else jsou jednoduché. Než se ale začnete cítit pohodlně psát programy Go, musíte pochopit několik rozdílů.

Pojďme se podívat na syntaxi Jazyka Go pro if příkazy.

Syntaxe příkazů if

Na rozdíl od jiných programovacích jazyků v Go nepotřebujete závorky v podmínkách. Klauzule else je nepovinná. Ale složené závorky jsou stále povinné. Go navíc nenabízí podporu pro ternární if příkazy ke snížení počtu řádků, takže musíte napsat úplné if příkazy pokaždé.

Tady je základní příklad if příkazu:

package main

import "fmt"

func main() {
    x := 27
    if x%2 == 0 {
        fmt.Println(x, "is even")
    }
}

Pokud syntaxe Jazyka Go obsahuje v podmínkách závorky, v editoru Visual Studio Code se při uložení programu automaticky odeberou závorky.

Složené příkazy if

Go podporuje složené if příkazy. Příkazy můžete vnořit pomocí else if příkazu. Tady je příklad:

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")
    }
}

V tomto kódu si všimněte, že num proměnná ukládá hodnotu vrácenou givemeanumber() funkcí a proměnná je k dispozici ve všech if větvích. Pokud se ale pokusíte vytisknout hodnotu num proměnné mimo if blok, zobrazí se chyba:

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)
}

Když program spustíte, výstup chyby vypadá takto:

# command-line-arguments
./main.go:17:14: undefined: num

Deklarace proměnných v if blocích v go je idiomaticka. Je to způsob, jak efektivně programovat pomocí konvence, která je společná v Go.