Sobes.tech
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 (cap naudojant)
  • Esamų elementų skaičiaus nustatymas (len naudojant)

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)