Sobes.tech
Junior

Quali operazioni è possibile eseguire con i canali in Go?

sobes.tech AI

Risposta dell'AI

  • Invio (<-chan)
  • Ricezione (chan<-)
  • Chiusura (close)
  • Verifica della chiusura (secondo valore restituito durante la ricezione)
  • Uso in select
  • Definizione della capacità (usando cap)
  • Definizione del numero corrente di elementi (usando len)

Esempio:

// Creazione di un canale con buffer
ch := make(chan int, 5)

// Invio di un valore
ch <- 10

// Ricezione di un valore
val := <-ch

// Verifica se il canale è chiuso al ricevimento
val, ok := <-ch

// Chiusura del canale
close(ch)

// Uso in select
select {
case msg1 := <-ch1:
	// elaborazione messaggi da ch1
case msg2 := <-ch2:
	// elaborazione messaggi da ch2
default:
	// nessun messaggio disponibile
}

// Definizione della capacità
bufferSize := cap(ch)

// Definizione del numero corrente di elementi
currentElements := len(ch)