Πώς να χρησιμοποιήσετε τη δήλωση επιλογής στο Golang;

Pos Na Chresimopoiesete Te Delose Epiloges Sto Golang



ΕΝΑ επιλέξτε δήλωση στο Golang επιτρέπει στους προγραμματιστές να συγχρονίζουν και να επικοινωνούν μεταξύ των ρουτινών Go, των καναλιών και των ροών δεδομένων. Επιτρέπει σε ένα πρόγραμμα Go να περιμένει λειτουργίες πολλαπλών καναλιών ταυτόχρονα και να εκτελέσει την πρώτη λειτουργία που είναι έτοιμη.

Σε αυτό το άρθρο, θα διερευνήσουμε τον τρόπο χρήσης επιλέξτε δήλωση στο Golang και παρέχετε παραδείγματα που θα σας βοηθήσουν να επιτύχετε παραλληλισμό, συγχρονισμό και συγχρονισμό στα προγράμματα Go.

Πώς να χρησιμοποιήσετε τη δήλωση επιλογής στο Golang;

Παρόμοια με την εντολή switch, το επιλέξτε δήλωση μας επιτρέπει να επιλέξουμε και να εκτελέσουμε μία έκφραση ανάμεσα σε πολλές εκφράσεις, αλλά η κύρια διαφορά μεταξύ επιλέγω και διακόπτης είναι ότι το επιλέξτε δήλωση λειτουργεί στην αρχή της αναμονής, που σημαίνει ότι το επιλέξτε δήλωση δεν θα εκτελεστεί μέχρι να ολοκληρωθεί η επικοινωνία.







Εδώ, η επικοινωνία αναφέρεται στην αποστολή και λήψη δεδομένων σε οποιοδήποτε δεδομένο κανάλι. Όταν ολοκληρωθεί η επικοινωνία, πραγματοποιείται ο επόμενος έλεγχος, επιτρέποντάς μας να δούμε ότι η δήλωση επιλογής της γλώσσας Go εξαρτάται πλήρως από το κανάλι.



Σύνταξη για Επιλογή δήλωσης

Η απλή σύνταξη που χρησιμοποιείται για το επιλέξτε δήλωση χρησιμοποιώντας τη γλώσσα Go φαίνεται παρακάτω:



επιλέγω {
υπόθεση κανάλι_1 :
// κώδικας για εκτέλεση όταν το channel_1 είναι έτοιμο
υπόθεση κανάλι_2 :
// κώδικας για εκτέλεση όταν το channel_2 είναι έτοιμο
υπόθεση κανάλι_3 :
// κώδικας για εκτέλεση όταν το channel_3 είναι έτοιμο
υπόθεση κανάλι_4 :
// κώδικας για εκτέλεση όταν το channel_4 είναι έτοιμο
Προκαθορισμένο :
// κώδικας για εκτέλεση εάν κανένα από τα κανάλια δεν είναι έτοιμο
}

Εδώ:





  • Μέσα σε ένα επιλέξτε δήλωση , κάθε περίπτωση αντιπροσωπεύει μια λειτουργία καναλιού, η οποία μπορεί να είναι μια λειτουργία λήψης ή μια λειτουργία αποστολής.
  • ο επιλέξτε δήλωση περιμένει έως ότου μια από τις περιπτώσεις είναι έτοιμη και στη συνέχεια την εκτελεί και τη σχετική δήλωση υπόθεσης.
  • Επιλέγει τυχαία το κανάλι σε περίπτωση που υπάρχουν πολλά κανάλια έτοιμα για εκτέλεση.

Πώς να δημιουργήσετε ένα κανάλι στο Golang

Για να δημιουργήσουν ένα κανάλι στο Go, οι χρήστες μπορούν να χρησιμοποιήσουν τη λειτουργία make ακολουθούμενη από το chan λέξη-κλειδί και καθορίστε τον τύπο καναλιού, που μπορεί να είναι int, string ή άλλα.

κεφ := φτιαχνω, κανω ( τύπου chan )

Εφαρμογή δήλωσης επιλογής στο Golang

Εδώ, θα παρέχουμε πολλά παραδείγματα για να σας βοηθήσουμε να μάθετε τα βασικά της χρήσης του επιλέξτε δήλωση στο Golang.



Παράδειγμα 1

Το ακόλουθο παράδειγμα του επιλέξτε δήλωση δείχνει πώς λειτουργεί όταν και τα δύο κανάλια είναι έτοιμα για εκτέλεση.

κύριο πακέτο

εισαγωγή 'fmt'

func main ( ) {

σε ένα := φτιαχνω, κανω ( chan ενθ )

str := φτιαχνω, κανω ( χορδή chan )

πηγαίνετε chan_num ( σε ένα )

πήγαινε chan_str ( str )

επιλέγω {

υπόθεση Κεφ.1 := <- σε ένα :

fmt. Println ( 'Δεδομένα καναλιού:' , Κεφ.1 )

υπόθεση Κεφάλαιο 2 := <- str :

fmt. Println ( 'Δεδομένα καναλιού:' , Κεφάλαιο 2 )

}

}

func chan_num ( num chan ενθ ) {

σε ένα <- 67

}

func chan_str ( str chan χορδή ) {

str <- 'Linux'

}

Στο παραπάνω παράδειγμα, δημιουργήσαμε δύο κανάλια, σε ένα, και str και χρησιμοποιήσαμε τις συναρτήσεις Go chan_num() για αποστολή δεδομένων στο κανάλι num και chan_str() για αποστολή δεδομένων στο κανάλι str. Επειδή το πρόγραμμα περιέχει δύο διαφορετικά κανάλια, χρησιμοποιήσαμε το επιλέξτε δήλωση να εκτελέσει ένα από αυτά.

Υπόθεση Κεφ.1 διαβάζει την τιμή από το αριθμός καναλιού και το εμφανίζει. Ομοίως, περίπτωση Κεφάλαιο 2 επιστρέφει την τιμή από το str Κανάλι. Το παραπάνω πρόγραμμα επιστρέφει την έξοδο του καναλιού που είναι έτοιμο για χρήση. Παραγωγή

Παράδειγμα 2

Εάν θέλετε να προσθέσετε καθυστέρηση σε ένα κανάλι και να επιστρέψετε την έξοδο ενός άλλου καναλιού, μπορείτε να χρησιμοποιήσετε το time.sleep() λειτουργία σε ένα καθορισμένο κανάλι. Αυτό σας επιτρέπει να εκτυπώσετε την έξοδο του άλλου καναλιού στην κονσόλα. Εδώ είναι ένα παράδειγμα τέτοιας περίπτωσης.

κύριο πακέτο

εισαγωγή (

'fmt'

'χρόνος'

)

func main ( ) {

σε ένα := φτιαχνω, κανω ( chan ενθ )

str := φτιαχνω, κανω ( χορδή chan )

πηγαίνετε chan_num ( σε ένα )

πήγαινε chan_str ( str )

επιλέγω {

υπόθεση Κεφ.1 := <- σε ένα :

fmt. Println ( 'Δεδομένα καναλιού:' , Κεφ.1 )

υπόθεση Κεφάλαιο 2 := <- str :

fmt. Println ( 'Δεδομένα καναλιού:' , Κεφάλαιο 2 )

}

}

func chan_num ( num chan ενθ ) {

σε ένα <- 67

}

func chan_str ( str chan χορδή ) {

χρόνος . Υπνος ( 5 * χρόνος . Δεύτερος )

str <- 'Linux'

}

Στον παραπάνω κώδικα χρησιμοποιήσαμε το time.Sleep() λειτουργία μέσα στο chan_str() λειτουργία. Μόνο το κανάλι num είναι έτοιμο για εκτέλεση για τα πρώτα 5 δευτερόλεπτα. Ως αποτέλεσμα, το επιλέξτε δήλωση τρεξίματα Κεφ.1 .

Παραγωγή

Σημείωση: Μπορείτε να προσθέσετε καθυστέρηση και στα δύο κανάλια για να καθυστερήσετε την εκτέλεση των καναλιών.

συμπέρασμα

ο επιλέξτε δήλωση στο Go επιτρέπει την επιλογή και την εκτέλεση μιας έκφρασης από πολλές παραστάσεις χρησιμοποιώντας την αρχή της αναμονής, όπου η εντολή δεν θα εκτελεστεί μέχρι να ολοκληρωθεί η επικοινωνία. Οι προαναφερθείσες οδηγίες περιλαμβάνουν επιλέξτε δήλωση βασική σύνταξη και παραδείγματα.