select time 模式

假如需要访问服务器获取数据,因为网络的不同响应时间不一样,为保证程序的质量,不可能一直等待网络返回,所以需要设置一个超时时间,这时候就可以使用 select timeout 模式。

func main() {
    result := make(chan string)
    go func() {
        // 摸你网络访问
        time.Sleep(8 * time.Second)
        result <- "服务端结果"
    }()

    select {
    case v := <-result:
        fmt.Println(v)
    case <-time.After(5 * time.Second):
        fmt.Println("网络访问超时了")
    }
}

select timeout 模式的核心在于通过 time.After 函数设置一个超时时间,防止因为异常造成 select 语句的无限等待。

最后修改:2023 年 06 月 26 日
如果觉得我的文章对你有用,请随意赞赏