Un resumen de todo lo anterior:
Un **Channel es una struct que recibe un tipo de dato. **
Para manejar un channel se utiliza la palabra reservada chan , esto significa que el canal solo utilizará el tipo de variable que se le asigne a éste.
Closures en GO o funciones anónimas se declaran de la siguiente manera
func () { ch <- "DATA" }
Los channels reciben información mediante una flecha apuntando hacia ala izquierda del canal
**Cerrar un canal ** significa que una vez que se ejecuta la función éste se cierra y no se pueden asignar más valores a dicho canal. Para ello se utiliza:
close(ch1)
Para imprimir información del canal, utilizamos** la flecha a la izquierda pero en esta ocasión del lado izq del canal** .
Entonces si la flecha está del lado derecho el canal recibe datos, si está del lado izquierdo el canal está enviando datos.
En GO existe algo llamado range, éste** devuelve el último valor en una iteración**.
Canales con Buffer
NOTA: El hilo pricipal también es una rutina
Es posible ** limitar la cantidad de info que almacena un canal** esto se hace de la siguiente manera:
ch2 := make(chan int, 2)
Si se sobrepasa la cantidad de info que puede almacenar un canal éste envía un error y se detiene totalmente el programa, para evitarlo, cada vez que se hace un envio de información en un canal se libera un espacio.