Junior — Middle
Cum trebuie să se realizeze corect citirea datelor dintr-un canal fără buffer?
sobes.tech AI
Răspuns de la AI
În Go, pentru a citi date dintr-un canal fără buffer, trebuie să folosiți o citire non-blocantă sau o citire cu controlul disponibilității datelor. Canalele implicit pot fi cu sau fără buffer, dar pentru a citi fără buffer, de obicei se folosesc canale fără buffer și operatorul <-.
Exemplu de citire dintr-un canal fără buffer:
ch := make(chan int) // canal fără buffer
// Trimitere într-o goroutine separată
go func() {
ch <- 42
}()
// Citire (va aștepta până când datele devin disponibile)
value := <-ch
fmt.Println(value) // 42
Pentru a evita blocarea la citire, se poate folosi construcția cu select și default:
select {
case val := <-ch:
fmt.Println("Primite", val)
default:
fmt.Println("Nicio dată")
}