Sobes.tech
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 παρέχουν ασφαλή και βολική επικοινωνία μεταξύ παράλληλων ροών εκτέλεσης.