Sobes.tech
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 ή άλλων μηχανισμών κλειδώματος.