Διαδρομές
/
Go
Go
/
Ύλη
/
Συνθήκες switch
Συ

Συνθήκες switch σε Go

1 άσκηση

Σχετικά με την έννοια Συνθήκες switch

Μία εντολή switch αξιολογεί μια έκφραση και εκτελεί το πρώτο case που ταιριάζει με την τιμή της. Είναι συχνά μια πιο καθαρή εναλλακτική από τις μακριές αλυσίδες if ... else if.

Βασική χρήση

operatingSystem := "windows"

switch operatingSystem {
case "windows":
    // do something if the operating system is windows
case "linux":
    // do something if the operating system is linux
case "macos":
    // do something if the operating system is macos
default:
    // do something if the operating system is none of the above
}

Πολλές τιμές μπορούν να ομαδοποιηθούν σε ένα μόνο case με κόμμα. Το case ταιριάζει αν η έκφραση ισούται με οποιαδήποτε από αυτές:

switch operatingSystem {
case "windows", "linux":
    // do something if the operating system is windows or linux
case "macos":
    // do something if the operating system is macos
default:
    // do something if the operating system is none of the above
}

switch χωρίς έκφραση

Η έκφραση μετά το switch μπορεί επίσης να παραλειφθεί εντελώς. Κάθε case τότε περιέχει μια έκφραση boolean, και εκτελείται το πρώτο που αξιολογείται σε true.

age := 21

switch {
case age > 20 && age < 30:
    // do something if age is between 20 and 30
case age == 10:
    // do something if age is equal to 10
default:
    // do something else for every other case
}

Εντολή αρχικοποίησης

Όπως και το if, ένα switch μπορεί να περιλαμβάνει μια σύντομη εντολή αρχικοποίησης πριν από την έκφραση. Οι μεταβλητές που δηλώνονται εκεί έχουν εμβέλεια στο μπλοκ του switch:

switch v := getValue(); {
case v < 0:
    // do something if v is less than 0
case v == 0:
    // do something if v is 0
default:
    // do something else for every other case
}
// v will not be accessible here

Fallthrough

Το fallthrough προκαλεί την εκτέλεση του σώματος του επόμενου case ανεξάρτητα από το αν η έκφρασή του θα ταίριαζε. Πρέπει να είναι η τελευταία εντολή στο σώμα του case, και πρέπει να υπάρχει επόμενο case για να εκτελεστεί.

Το fallthrough είναι σπάνιο στον ιδιωματικό Go, επειδή κάνει τα γειτονικά cases εξαρτημένα μεταξύ τους. Ως αποτέλεσμα, είναι πιο δύσκολο να συλλογιστεί κανείς για τα cases μεμονωμένα, κάτι που κάνει το switch πιο δύσκολο στην ανάγνωση. Όταν τα cases πρέπει να έχουν την ίδια συμπεριφορά, η ομαδοποίησή τους με κόμμα είναι πιο καθαρή. Όταν η λογική μοιράζεται μεταξύ cases για άλλους λόγους, σκέψου να εξαγάγεις την κοινή λογική σε μια βοηθητική συνάρτηση.

s := "hello"

switch s {
case "hello":
    fmt.Println("hello")
    fallthrough
case "world":
    fmt.Println("world") // also runs, even though s != "world"
}
// Output:
// hello
// world

Για να μάθεις περισσότερα, δες το Go by Example: Switch ή την προδιαγραφή της γλώσσας Go.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Συνθήκες switch