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