go channel问题
发布于
package main
import (
"fmt"
"sync"
"time"
)
var wg sync.WaitGroup
func main() {
baton := make(chan int)
wg.Add(1)
go Runner(baton)
baton <- 1
wg.Wait()
}
func Runner(baton chan int) {
var newRunner int
runner := <-baton
fmt.Printf("Runner %d \n", runner)
if runner != 4 {
newRunner = runner + 1
go Runner(baton)
}
time.Sleep(100 * time.Millisecond)
if runner == 4 {
wg.Done()
return
}
baton <- newRunner
}
go Runner(baton)为什么还能取到baton <- newRunner传入的值(执行顺序正常)
浏览(432)
