Junior — Middle
Ինչպե՞ս պետք է ճիշտ կերպով իրականացնել տվյալների ընթերցումը բուֆերազուրկ ալիքից։
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, տվյալների ընթերցանության համար առանց բուֆերային, պետք է օգտագործել ոչ բլոկային ընթերցում կամ տվյալների առկայության վերահսկմամբ ընթերցում։ Չանալները կարող են լինել բուֆերային կամ առանց բուֆերային, բայց առանց բուֆերային ընթերցման համար սովորաբար օգտագործվում են առանց բուֆերային չանալներ և <- օպերատոր։
Օրինակ առանց բուֆերային չանալից տվյալների ընթերցման:
ch := make(chan int) // առանց բուֆերային չանալ
// Ուղարկում առանձին գորուտինում
go func() {
ch <- 42
}()
// Ընթերցում (կպահի մինչև տվյալները հայտնվեն)
value := <-ch
fmt.Println(value) // 42
Եթե ուզում եք խուսափել բլոկավորումից ընթերցման ժամանակ, կարող եք օգտագործել select և default կառուցվածքը.
select {
case val := <-ch:
fmt.Println("Ստացվեց", val)
default:
fmt.Println("Տվյալներ չկան")
}