Junior
Ποιες λειτουργίες μπορούν να εκτελεστούν με κανάλια στο Go;
sobes.tech AI
Απάντηση από AI
- Αποστολή (
<-chan) - Λήψη (
chan<-) - Κλείσιμο (
close) - Έλεγχος κλεισίματος (το δεύτερο αποτέλεσμα κατά τη λήψη)
- Χρήση σε
select - Ορισμός του buffer (χρησιμοποιώντας
cap) - Ορισμός του τρέχοντος αριθμού στοιχείων (χρησιμοποιώντας
len)
Παράδειγμα:
// Δημιουργία buffered καναλιού
ch := make(chan int, 5)
// Αποστολή τιμής
ch <- 10
// Λήψη τιμής
val := <-ch
// Έλεγχος αν το κανάλι είναι κλειστό κατά τη λήψη
val, ok := <-ch
// Κλείσιμο καναλιού
close(ch)
// Χρήση σε select
select {
case msg1 := <-ch1:
// επεξεργασία μηνυμάτων από ch1
case msg2 := <-ch2:
// επεξεργασία μηνυμάτων από ch2
default:
// δεν υπάρχουν διαθέσιμα μηνύματα
}
// Ορισμός buffer
bufferSize := cap(ch)
// Ορισμός τρέχοντος αριθμού στοιχείων
currentElements := len(ch)