Sobes.tech
Senior

Τι μπορεί να χρησιμοποιηθεί για τη μεταφορά δεδομένων μεταξύ goroutines;

sobes.tech AI

Απάντηση από AI

Για τη μεταφορά δεδομένων μεταξύ goroutines σε Go, συνήθως χρησιμοποιούνται κανάλια (channels). Τα κανάλια παρέχουν ασφαλή συγχρονισμό και μεταφορά δεδομένων, επιτρέποντας στις goroutines να ανταλλάσσουν τιμές χωρίς ρητές μπλοκαρίσματα.

Παράδειγμα χρήσης καναλιού:

ch := make(chan int)

// Αποστολή δεδομένων σε goroutine
go func() {
    ch <- 42
}()

// Λήψη δεδομένων
value := <-ch
fmt.Println(value) // 42

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