简介
在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
}