Middle+
Τι είναι ένα κανάλι στο Go; Για τι χρησιμοποιούνται τα κανάλια;
sobes.tech AI
Απάντηση από AI
Στο Go, ένα κανάλι (channel) είναι ένας μηχανισμός για τη μετάδοση δεδομένων μεταξύ goroutines (ελαφριών νημάτων). Τα κανάλια παρέχουν ασφαλή και συγχρονισμένη επικοινωνία, επιτρέποντας στις goroutines να ανταλλάσσουν τιμές χωρίς κοινές μεταβλητές και μπλοκαρίσματα.
Τα κανάλια δηλώνονται με την καθορισμό του τύπου των δεδομένων που μεταδίδονται, για παράδειγμα:
ch := make(chan int) // κανάλι για μετάδοση ακέραιων αριθμών
Οι βασικές λειτουργίες με κανάλια:
- Αποστολή τιμής:
ch <- value - Λήψη τιμής:
value := <-ch
Τα κανάλια χρησιμοποιούνται για:
- Συγχρονισμό goroutines
- Μεταφορά δεδομένων μεταξύ goroutines
- Οργάνωση αγωγών επεξεργασίας δεδομένων
Παράδειγμα:
package main
import (
"fmt"
"time"
)
func worker(ch chan int) {
for val := range ch {
fmt.Println("Λήφθηκε:", val)
}
}
func main() {
ch := make(chan int)
go worker(ch)
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // κλείνουμε το κανάλι ώστε να τερματίσει ο worker
time.Sleep(time.Second)
}
Σε αυτό το παράδειγμα, το κανάλι χρησιμοποιείται για τη μετάδοση αριθμών από το κύριο goroutine στον worker, ο οποίος τους εμφανίζει.