我正在学习Go,并且正在从GoTours上学习本课程。到目前为止,这就是我所拥有的。package mainimport ( "fmt" "code.google.com/p/go-tour/tree")// Walk walks the tree t sending all values// from the tree to the channel ch.func Walk(t *tree.Tree, ch chan int) { if t != nil { Walk(t.Left, ch) ch <- t.Value Walk(t.Right, ch) }}func main() { var ch chan int = make(chan int) go Walk(tree.New(1), ch) for c := range ch { fmt.Printf("%d ", c) }}如您所见,我尝试通过打印输出到通道中的值来测试Walk函数。但是,出现以下错误。1 2 3 4 5 6 7 8 9 10 throw: all goroutines are asleep - deadlock!goroutine 1 [chan receive]:main.main() main.go:25 +0x85goroutine 2 [syscall]:created by runtime.main /usr/local/go/src/pkg/runtime/proc.c:221exit status 2我认为应该预料到该错误,因为我从不使用close该通道。但是,有没有一种方法可以“捕获”此死锁错误并以编程方式对其进行处理?
3 回答
- 3 回答
- 0 关注
- 198 浏览
添加回答
举报
0/150
提交
取消