Khi đóng một channel, hàm closechan sẽ được thực thi:
Logic đóng channel khá đơn giản. Đối với một channel, recvq và sendq lưu trữ các sender và receiver đang bị chặn. Sau khi đóng channel, đối với receiver đang chờ, nó sẽ nhận được giá trị zero value tương ứng. Đối với sender đang chờ, nó sẽ panic trực tiếp. Do đó, không thể đóng channel một cách vô thận khi không biết liệu channel còn receiver hay không.
Hàm close trước tiên khóa channel, sau đó nối tất cả các sender và receiver treo trên channel thành một danh sách liên kết sudog, sau đó mở khóa. Cuối cùng, đánh thức tất cả các sudog đã được nối.
Sau khi được đánh thức, sender sẽ tiếp tục thực thi mã sau hàm goparkunlock trong hàm chansend, rất không may, nó phát hiện rằng channel đã bị đóng, và panic. Receiver, tuy nhiên, may mắn hơn, hoàn thành một số công việc cuối cùng và trả về. Ở đây, selected trả về true, trong khi giá trị trả về received phụ thuộc vào việc channel đã đóng hay chưa. Nếu channel đã đóng, received trả về false, ngược lại trả về true. Trong trường hợp phân tích của chúng ta, received trả về false.