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.