面试题答案
一键面试package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan int)
var result int
select {
case result = <-ch:
fmt.Println("Received data:", result)
case <-time.After(2 * time.Second):
fmt.Println("Timeout occurred.")
}
}
在上述代码中:
- 我们创建了一个无缓冲通道
ch
。 - 使用
select
语句来尝试从通道ch
读取数据。 - 同时,使用
time.After
函数创建一个定时器,2 秒后向其返回的通道发送一个值。 - 如果 2 秒内从
ch
通道读取到数据,就会执行case result = <-ch
分支;如果 2 秒内未读取到数据,就会执行case <-time.After(2 * time.Second)
分支,输出超时信息。