Sobes.tech
Junior

Ce operații se pot realiza cu canale în Go?

sobes.tech AI

Răspuns de la AI

  • Trimitere (<-chan)
  • Primire (chan<-)
  • Închidere (close)
  • Verificare dacă s-a închis (al doilea rezultat la primire)
  • Utilizare în select
  • Definirea bufferului (folosind cap)
  • Determinarea numărului curent de elemente (folosind len)

Exemplu:

// Crearea unui canal tamponat
ch := make(chan int, 5)

// Trimiterea unei valori
ch <- 10

// Primirea unei valori
val := <-ch

// Verificarea dacă canalul este închis la primire
val, ok := <-ch

// Închiderea canalului
close(ch)

// Utilizare în select
select {
case msg1 := <-ch1:
	// procesare mesaje din ch1
case msg2 := <-ch2:
	// procesare mesaje din ch2
default:
	// nu există mesaje disponibile
}

// Definirea bufferului
bufferSize := cap(ch)

// Determinarea numărului curent de elemente
currentElements := len(ch)