Testen von Bedingungen mit if/else-Ausdrücken

Abgeschlossen

Der grundlegendste Ablaufsteuerung in jeder Programmiersprache ist die if/else-Anweisung. In Go sind if/else-Anweisungen ganz einfach. Aber Sie müssen ein paar Unterschiede verstehen, bevor Sie sich beim Schreiben von Go-Programmen wohlfühlen.

Werfen wir einen Blick auf die Go-Syntax für if-Anweisungen.

Syntax für if-Anweisungen

Im Gegensatz zu anderen Programmiersprachen benötigen Sie in Go keine Klammern in Bedingungen. Die else-Klausel ist optional. Geschweifte Klammern sind jedoch weiterhin erforderlich. Außerdem bietet Go keine Unterstützung für ternäre if-Anweisungen, um Zeilen zu reduzieren, sodass Sie jedes Mal die vollständige if-Anweisung schreiben müssen.

Nachfolgend sehen Sie ein einfaches Beispiel für eine if-Anweisung:

package main

import "fmt"

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

Wenn Ihre Go-Syntax in Visual Studio Code Klammern in Bedingungen enthält, werden die Klammern automatisch entfernt, wenn Sie Ihr Programm speichern.

Zusammengesetzte if-Anweisungen

Go unterstützt zusammengesetzte if-Anweisungen. Sie können-Anweisungen mit der else if-Anweisung schachteln. Hier sehen Sie ein Beispiel:

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

Beachten Sie in diesem Code, dass die Variable num den von der Funktion givemeanumber() zurückgegebenen Wert speichert und die Variable in allen if-Branches verfügbar ist. Wenn Sie jedoch versuchen, den Wert der Variablen num außerhalb des if-Blocks auszugeben, erhalten Sie einen Fehler:

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

Wenn Sie das Programm ausführen, sieht die Fehlerausgabe wie folgt aus:

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

In Go ist das Deklarieren von Variablen innerhalb von if-Blöcken idiomatisch. Es ist eine Möglichkeit, mithilfe einer in Go üblichen Konvention effektiv zu programmieren.