Sobes.tech
Junior

Que operações podem ser realizadas com canais em Go?

sobes.tech IA

Resposta da IA

  • Envio (<-chan)
  • Receção (chan<-)
  • Fecho (close)
  • Verificação de fecho (o segundo valor devolvido na receção)
  • Uso em select
  • Definição de buffer (usando cap)
  • Definição do número atual de elementos (usando len)

Exemplo:

// Criar um canal com buffer
ch := make(chan int, 5)

// Enviar valor
ch <- 10

// Receber valor
val := <-ch

// Verificar se o canal está fechado ao receber
val, ok := <-ch

// Fechar o canal
close(ch)

// Uso em select
select {
case msg1 := <-ch1:
	// processar mensagens de ch1
case msg2 := <-ch2:
	// processar mensagens de ch2
default:
	// sem mensagens disponíveis
}

// Definir o buffer
bufferSize := cap(ch)

// Número atual de elementos
currentElements := len(ch)