Sobes.tech
Junior — Middle

Արդյոք թույլատրվում է տվյալներ ուղարկել այն ալիքին, որը բաց չէ ընթերցման և գրելու համար:

sobes.tech AI

Պատասխան AI-ից

Go լեզվում, հնարավոր չէ տվյալներ ուղարկել այն ալիքին, որը բաց չէ գրելու համար: Եթե ալիքը փակված է (close(channel)-ով), ապա փորձել այն ուղարկել կհանգեցնի պանիկայի (runtime panic)։

Այնուամենայնիվ, փակված ալիքից ընթերցումը հնարավոր է՝ այդ ժամանակ ընթերցումը կվերադարձնի ալիքին բնորոշ զրոյական արժեքը և նշան, որը ցույց է տալիս, որ ալիքը փակ է:

Օրինակ՝

ch := make(chan int)
close(ch)

// Փակված ալիքից ընթերցումը անվտանգ է
value, ok := <-ch // ok == false

// Փակված ալիքին տվյալներ ուղարկելն առաջացնում է պանիկա
ch <- 1 // panic: send on closed channel

Արդյունքում, տվյալները կարելի է ուղարկել միայն բաց ալիքներին։