Sobes.tech
Junior — Middle

Kako pravilno vršiti čitanje podataka iz kanala bez bafera?

sobes.tech АИ

Одговор од АИ

У 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("Нема података")
}