Go语言struct{}类型的channel 说明

    技术2022-07-14  76

    简介

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

     

    Processed: 0.016, SQL: 9