Junior
Kokias operacijas galima atlikti su kanalais Go kalboje?
sobes.tech AI
Atsakymas iš AI
- Siuntimas (
<-chan) - Priėmimas (
chan<-) - Uždarymas (
close) - Uždarymo patikrinimas (antrasis grąžinamasis reikšmė priimant)
- Naudojimas
select - Buferio dydžio nustatymas (
capnaudojant) - Esamų elementų skaičiaus nustatymas (
lennaudojant)
Pavyzdys:
// Sukurti buferuotą kanalą
ch := make(chan int, 5)
// Siųsti reikšmę
ch <- 10
// Gauti reikšmę
val := <-ch
// Patikrinti, ar kanalas uždarytas priimant
val, ok := <-ch
// Uždaryti kanalą
close(ch)
// Naudojimas `select`
select {
case msg1 := <-ch1:
// apdoroti žinutes iš ch1
case msg2 := <-ch2:
// apdoroti žinutes iš ch2
default:
// nėra prieinamų žinučių
}
// Nustatyti buferio dydį
bufferSize := cap(ch)
// Nustatyti esamų elementų skaičių
currentElements := len(ch)