Sobes.tech
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 ή άλλα μηχανισμούς συγχρονισμού.