Sobes.tech
Junior — Middle

Hogyan kell helyesen olvasni adatokat egy buffer nélküli csatornából?

sobes.tech MI

Válasz az MI-től

Go nyelven, az adat olvasásához egy csatornából puffer nélkül, nem blokkoló olvasást vagy adat elérhetőségének ellenőrzésével történő olvasást kell használni. A csatornák alapértelmezés szerint lehetnek puffereltek vagy puffer nélküliak, de puffer nélküli olvasáshoz általában puffer nélküli csatornákat és a <- operátort használnak.

Példa puffer nélküli csatornából való olvasásra:

ch := make(chan int) // puffer nélküli csatorna

// Küldés külön goroutine-ben
go func() {
    ch <- 42
}()

// Olvasás (várni fog, amíg adatok nem jelennek meg)
value := <-ch
fmt.Println(value) // 42

A blokkolás elkerülése érdekében olvasás közben, használhatja a select és default konstrukciót:

select {
case val := <-ch:
    fmt.Println("Megkapva", val)
default:
    fmt.Println("Nincs adat")
}