Junior — Middle
Можеш ли да дадеш пример кога и как се използват каналите за обмен на данни между нишки или горутини?
sobes.tech AI
Отговор от AI
В Go каналите се използват за безопасен обмен на данни между горутините, позволявайки им да се синхронизират и да предават стойности.
Пример за използване на канал за предаване на числа от една горутина към друга:
package main
import (
"fmt"
"time"
)
func producer(ch chan int) {
for i := 0; i < 5; i++ {
ch <- i // изпращане на данни към канала
time.Sleep(time.Millisecond * 500)
}
close(ch) // затваряне на канала след изпращане на всички данни
}
func consumer(ch chan int) {
for val := range ch { // получаване на данни от канала
fmt.Println("Получено:", val)
}
}
func main() {
ch := make(chan int)
go producer(ch)
consumer(ch)
}
Тук producer изпраща числа към канала, а consumer ги чете. Каналите осигуряват безопасен пренос на данни без необходимост от използване на мьютекси или други механизми за синхронизация.