Junior — Middle
Πώς υλοποιείται η ανταλλαγή πληροφοριών μεταξύ δύο goroutines στη γλώσσα Go;
sobes.tech AI
Απάντηση από AI
Στη Go, η ανταλλαγή πληροφοριών μεταξύ δύο goroutines πραγματοποιείται συνήθως μέσω καναλιών (channels). Τα κανάλια επιτρέπουν ασφαλή μετάδοση δεδομένων μεταξύ goroutines και συγχρονισμό.
Παράδειγμα ανταλλαγής μέσω καναλιού:
package main
import (
"fmt"
)
func sender(ch chan<- string) {
ch <- "Γειά από τον sender"
}
func receiver(ch <-chan string) {
msg := <-ch
fmt.Println("Ληφθέν μήνυμα:", msg)
}
func main() {
ch := make(chan string)
go sender(ch)
go receiver(ch)
// Περιμένουμε να ολοκληρωθούν οι goroutines
var input string
fmt.Scanln(&input)
}
Εδώ, ο sender στέλνει μια συμβολοσειρά στο κανάλι, και ο receiver διαβάζει από αυτό. Τα κανάλια διασφαλίζουν ασφαλή ανταλλαγή δεδομένων χωρίς την ανάγκη για mutex ή άλλα μηχανισμούς συγχρονισμού.