2 回答

TA貢獻2080條經(jīng)驗 獲得超4個贊
在通道上帶有子句的語句從通道接收值,并將它們存儲在循環(huán)變量中。forrange
這意味著該變量將保存從 接收的值,您不需要從 接收。ichch
但是,您沒有使用 ,并且您確實從 接收。因此,您將跳過每兩個元素(如果通道上傳遞的元素數(shù)量奇數(shù),您也可能會被阻止)。ich
像這樣做:
for v := range ch {
fmt.Printf("%d ", v)
}

TA貢獻1828條經(jīng)驗 獲得超4個贊
根據(jù)伊察的建議:
func binary(t *tree.Tree, ch chan int) {
if t != nil {
binary(t.Left, ch)
ch <- t.Value
binary(t.Right, ch)
}
}
func Walk(t *tree.Tree, ch chan int) {
defer close(ch)
binary(t, ch)
}
func main() {
ch := make(chan int)
go Walk(tree.New(1), ch)
for v := range ch {
fmt.Printf("%d ", v)
}
}
- 2 回答
- 0 關(guān)注
- 89 瀏覽
添加回答
舉報