Junior — Middle
Πώς πραγματοποιείται η αλληλεπίδραση μεταξύ των goroutines στο Go;
sobes.tech AI
Απάντηση από AI
Στη Go, η αλληλεπίδραση μεταξύ των goroutines πραγματοποιείται μέσω καναλιών (channels). Τα κανάλια επιτρέπουν την ασφαλή μεταφορά δεδομένων μεταξύ goroutines και την συγχρονισμένη λειτουργία τους.
Βασικά σημεία:
- Το κανάλι δημιουργείται με
make(chan Τύπος). - Αποστολή στο κανάλι:
ch <- τιμή. - Λήψη από το κανάλι:
τιμή := <-ch. - Τα κανάλια μπορούν να είναι με ή χωρίς buffer.
Παράδειγμα:
func main() {
ch := make(chan string)
go func() {
ch <- "γεια από τη goroutine"
}()
msg := <-ch
fmt.Println(msg)
}
Έτσι, τα κανάλια παρέχουν μια ασφαλή και βολική αλληλεπίδραση μεταξύ παράλληλων goroutines χωρίς την ανάγκη χρήσης mutex ή άλλων μηχανισμών κλειδώματος.