我有以下最小示例,该示例由于死锁而在第一个命令行输入之后无法正常工作:package main import "fmt" import "os" func main() { channel1 := make(chan string) go func() { var str string for { fmt.Fscanln(os.Stdin, &str) channel1 <- str } }() for { select { case str := <-channel1: fmt.Printf("Channel1 said: %v\n", str) } } } 我本来希望这只是接受用户输入并一遍又一遍地回显它。另外,我确实注意到,如果添加第二个通道和第二个go例程,则不会出现任何死锁问题。那么为什么会出现这种僵局呢?
1 回答
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消