Junior — Middle
¿Puedes dar un ejemplo de cuándo y cómo se utilizan los canales para intercambiar datos entre hilos o goroutines?
sobes.tech AI
Respuesta de la IA
En Go, los canales se utilizan para intercambiar datos de manera segura entre goroutines, permitiendo sincronizarlas y transmitir valores.
Ejemplo de uso de un canal para transmitir números de una goroutine a otra:
package main
import (
"fmt"
"time"
)
func productor(ch chan int) {
for i := 0; i < 5; i++ {
ch <- i // enviando datos al canal
time.Sleep(time.Millisecond * 500)
}
close(ch) // cerrando el canal después de enviar todos los datos
}
func consumidor(ch chan int) {
for val := range ch { // recibiendo datos del canal
fmt.Println("Recibido:", val)
}
}
func main() {
ch := make(chan int)
go productor(ch)
consumidor(ch)
}
Aquí, productor envía números al canal, y consumidor los lee. Los canales aseguran una transmisión segura de datos sin necesidad de usar mutexes u otros mecanismos de sincronización.