Junior — Middle
Чӣ гуна ташкил кардан мумкин аст ҳамкориӣ ва интиқоли маълумот тавассути каналҳо дар система?
sobes.tech AI
Ҷавоб аз AI
Дар Go, ҳамкорӣ байни goroutines одатан тавассути каналҳо (channels) ташкил карда мешавад — қубурҳои типӣ барои интиқоли маълумот.
Барои интиқоли маълумот, канал бо make(chan Tip) сохта мешавад. Goroutines метавонанд маълумотро ба канал бо оператори <- фиристанд ва ҳамон операторро барои гирифтани маълумот аз канал истифода баранд, ки ин ҳамоҳангсозиро таъмин мекунад.
Масалан:
package main
import (
"fmt"
"time"
)
func истеҳсолкунанда(ch chan<- int) {
for i := 0; i < 5; i++ {
ch <- i // фиристодани маълумот
time.Sleep(time.Millisecond * 500)
}
close(ch) // каналиро мебандем, барои нишон додани анҷом
}
func истеъмолкунанда(ch <-chan int) {
for val := range ch { // гирифтани маълумот аз канал
fmt.Println("Гирифт:", val)
}
}
func main() {
ch := make(chan int)
go истеҳсолкунанда(ch)
истеъмолкунанда(ch)
}
Ин тариқ, каналҳо имкон медиҳанд, ки маълумот байни goroutine-ҳо бехатар ва самаранок интиқол дода шавад, ва ҳолатҳои рақобат ва бастаниҳо пешгирӣ шаванд.