简介
在Go语言中,有一种特殊的struct{}类型的channel,它不能被写入任何数据,只有通过close()函数进行关闭操作,才能进行输出操作。struct类型的channel不占用任何内存!!! 定义:
var sig = make(chan struct{})
如果我们尝试为struct{}类型的channel 传递数据则会出现死锁
sign <- struct{}{}
错误如下:
fatal error: all goroutines are asleep - deadlock!
解除方式:
func main() {
var sig = make(chan struct{})
close(sig) // 必须先进行close,才能执行<-sig,否则是死锁
<-sig
}