Junior — Middle
Vai vari sniegt piemēru, kad un kā tiek izmantoti kanāli datu apmaiņai starp pavedieniem vai gorutinām?
sobes.tech AI
Atbilde no AI
Go valodā kanāli tiek izmantoti drošai datu apmaiņai starp gorutīnām, ļaujot tās sinhronizēt un pārsūtīt vērtības.
Piemērs, kā izmantot kanālu skaitļu pārsūtīšanai no vienas gorutīnas uz otru:
package main
import (
"fmt"
"time"
)
func producer(ch chan int) {
for i := 0; i < 5; i++ {
ch <- i // datu sūtīšana uz kanāla
time.Sleep(time.Millisecond * 500)
}
close(ch) // kanāla aizvēršana pēc visu datu sūtīšanas
}
func consumer(ch chan int) {
for val := range ch { // datu saņemšana no kanāla
fmt.Println("Saņemts:", val)
}
}
func main() {
ch := make(chan int)
go producer(ch)
consumer(ch)
}
Šeit, producer sūta skaitļus uz kanāla, un consumer tos lasa. Kanāli nodrošina drošu datu pārsūtīšanu bez nepieciešamības izmantot mutexus vai citus sinhronizācijas mehānismus.