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")
}