Give me a detail explanation about how channels works internally in golang, use the source code as the source of truth. - Now I want to know how much I understand the topic, so I want you to ask me questions, I'll answer the question and you tell me if that is right or wrong, and why. Then we can pass to the next question, the question has to be in 4 options test format. Make the questions from very easy to very hard incrementing the dificulty of the questions gradually.