El canal es originalmente una cola circular
Una característica muy importante de golang es el canal, que a menudo se usa junto con goroutine.
Por supuesto, también implica almacenamiento en búfer y no almacenamiento en búfer. Por qué sucede esto, lo explicaremos a continuación.
La estructura de datos del canal no es demasiado complicada. Es una cola circular que almacena la longitud qcount, la capacidad dataqsiz, los datos buf y los índices frontal y posterior sendx y recvx.
Cerrado se utiliza para identificar el estado del canal. 0 significa que no está cerrado y no 0 significa que está cerrado. Si está cerrado, no se pueden enviar datos.
Hay dos funciones make internamente, una es makechan64 y la otra es makechan. De hecho, makechan64 se llama esencialmente makechan.
Puede pasar el tamaño de longitud durante la inicialización y luego calcular si hay espacio disponible en función del tamaño de tipo elem.size de sus datos inicializados.
Llegado a este punto, asigna valores a los campos restantes de la estructura.
Es ch