Sobes.tech
Junior

Aké operácie je možné vykonávať s kanálmi v Go?

sobes.tech AI

Odpoveď od AI

  • Odoslanie (<-chan)
  • Prijímanie (chan<-)
  • Zatvorenie (close)
  • Kontrola zatvorenia (druhá hodnota pri prijímaní)
  • Použitie v select
  • Definovanie bufferu (pomocou cap)
  • Určenie aktuálneho počtu prvkov (pomocou len)

Príklad:

// Vytvorenie bufferovaného kanála
ch := make(chan int, 5)

// Odoslanie hodnoty
ch <- 10

// Prijatie hodnoty
val := <-ch

// Kontrola, či je kanál zatvorený pri prijímaní
val, ok := <-ch

// Zatvorenie kanála
close(ch)

// Použitie v select
select {
case msg1 := <-ch1:
	// spracovanie správ z ch1
case msg2 := <-ch2:
	// spracovanie správ z ch2
default:
	// žiadne dostupné správy
}

// Určenie veľkosti bufferu
bufferSize := cap(ch)

// Určenie aktuálneho počtu prvkov
currentElements := len(ch)