Go 的 select 语句的 cases 中有多个代码
Multiple tickers in Go's select statement's cases
当我 运行 下面的 Go 1.18 代码时,我希望看到这两条消息一条接一条地重复打印到标准输出。但是,我只看到重复打印“ping”。为什么? select
语句必须执行这两种情况,因为有两个不同的通道操作,并且通道本身也不同。
for {
select {
case <-time.NewTicker(time.Millisecond * 400).C:
fmt.Println("ping")
case <-time.NewTicker(time.Millisecond * 600).C:
fmt.Println("pong")
}
}
您正在为案例创建一个新的代码。 select 语句首先评估 case,这意味着它创建了两个计时器,在较短的一个计时结束后,它创建了另一对计时器。下次再选矮的。
在 for 循环外创建两个代码。
当我 运行 下面的 Go 1.18 代码时,我希望看到这两条消息一条接一条地重复打印到标准输出。但是,我只看到重复打印“ping”。为什么? select
语句必须执行这两种情况,因为有两个不同的通道操作,并且通道本身也不同。
for {
select {
case <-time.NewTicker(time.Millisecond * 400).C:
fmt.Println("ping")
case <-time.NewTicker(time.Millisecond * 600).C:
fmt.Println("pong")
}
}
您正在为案例创建一个新的代码。 select 语句首先评估 case,这意味着它创建了两个计时器,在较短的一个计时结束后,它创建了另一对计时器。下次再选矮的。
在 for 循环外创建两个代码。