Junior — Middle
Ar galite pateikti pavyzdį, kada ir kaip naudojami kanalai duomenų keitimui tarp gijų ar gorutinų?
sobes.tech AI
Atsakymas iš AI
Go kalbose kanalai naudojami saugiai duomenų mainams tarp gorutinų, leidžiant jų sinchronizaciją ir reikšmių perdavimą.
Pavyzdys, kaip naudoti kanalą skaičių perdavimui iš vienos gorutinės kitai:
package main
import (
"fmt"
"time"
)
func producer(ch chan int) {
for i := 0; i < 5; i++ {
ch <- i // duomenų siuntimas į kanalą
time.Sleep(time.Millisecond * 500)
}
close(ch) // kanalo uždarymas po visų duomenų siuntimo
}
func consumer(ch chan int) {
for val := range ch { // duomenų gavimas iš kanalo
fmt.Println("Gauta:", val)
}
}
func main() {
ch := make(chan int)
go producer(ch)
consumer(ch)
}
Čia, producer siunčia skaičius į kanalą, o consumer juos skaito. Kanalai užtikrina saugų duomenų perdavimą be būtinybės naudoti mutexus ar kitus sinchronizacijos mechanizmus.