package mainimport fmtfunc main testfunc test ch = makechan int 0 go fmtPrintlnch ch - 1这段代码会发生什么
这段代码会发生死锁。
在test函数中,创建了一个无缓冲的通道ch,然后启动了一个goroutine来打印这个通道。接着,在主函数中,尝试向通道ch中发送一个值1。
由于通道是无缓冲的,发送操作会阻塞直到有其他goroutine准备好接收这个值。但是,在这段代码中,并没有其他goroutine来接收这个值,因此发送操作会一直阻塞。
同时,启动的goroutine会在通道ch被阻塞的时候尝试打印这个通道,但是由于通道被阻塞,打印操作也会被阻塞。
因此,这段代码会发生死锁,程序无法继续执行下去。
原文地址: https://www.cveoy.top/t/topic/iWlb 著作权归作者所有。请勿转载和采集!