Sobes.tech
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)