Golang Channels nil send blocks forever receive blocks forever open send blocks until received receive blocks until sent closed send panics receive returns zero value