登录
首页 >  Golang >  Go问答

在SQL中如何根据条件执行“select”语句中的“case”

来源:stackoverflow

时间:2024-02-17 19:48:23 253浏览 收藏

golang学习网今天将给大家带来《在SQL中如何根据条件执行“select”语句中的“case”》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我有一个频道:

achan := make(chan struct{})

和超时持续时间 var t time.duration。我希望程序在通道关闭或达到 t 超时时退出, 如果 t 是正持续时间

我知道我可以使用外部 if else 循环,但这看起来非常多余:

if t >= time.Duration(0) {
        select {
        case <-time.After(t):
            fmt.Fprintln(os.Stdout, "timeout!"))
            close(timeoutChan)
        case <-aChan:
            fmt.Fprintln(os.Stdout, "aChan is closed"))
            return
        }
    } else {
        select {
        case <-aChan:
            fmt.Fprintln(os.Stdout, "aChan is closed"))
            return
        }
    }

有更优雅的写法吗?


正确答案


当持续时间小于零时,使用 nil 通道进行超时。 nil 通道的超时情况不会执行,因为 nil 通道上的接收从未准备好。

var after <-chan time.Time
if t >= 0 {
    after = time.After(t)
}
select {
case <-after:
    fmt.Println("timeout!")
    close(timeoutChan)
case <-aChan:
    fmt.Println("aChan is closed")
    return
}

理论要掌握,实操不能落!以上关于《在SQL中如何根据条件执行“select”语句中的“case”》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>