Sobes.tech
Middle+

Каналды ким жабу керек - жазуучу беле окуучу беле?

sobes.tech AI

AIден жооп

Goда, каналды жабуу керек жазуучу (sender) тараптан, ал окуучу (receiver) тараптан эмес. Каналды жабуу анын дагы маанилүү болбой турганын белгилейт, жана окуучулар жабылган каналды аныктап, туура окууну аяктоого мүмкүнчүлүк алышат.

Эгер окуучу каналды жабса жана жазуучу уланта берсе, бул panicке алып келет. Ошондуктан, каналды жабуу жоопкерчилиги аны жазган тарапка таандык.

Мисал:

ch := make(chan int)
func() {
    defer close(ch) // жазуучу каналды жабат
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // жабылгандан кийин окуйт
}