Go - Python的“pass”相当于什么?

时间:2012-09-17 01:48:31

标签: python select go

我在select语句中有一个默认原因,我想什么都不做,只是继续,但是将该行留空会阻止语句中的任何内容发生

        select {
        case quit_status := <-quit:
            if quit_status == true {
                fmt.Printf("********************* GOROUTINE [%d] Received QUIT MSG\n", id)
                return
            }
        default:
            fmt.Printf("GOROUTINE [%d] step: %d, NO QUIT MSG\n", id, i)
        }

2 个答案:

答案 0 :(得分:9)

default语句中的select个案旨在为通道读写提供非阻塞I / O.只要任何一个案例中的通道都没有准备好被读/写,就会执行default案例中的代码。

因此,在您的情况下,如果退出通道无话可说,则执行default块。 您可以简单地删除默认情况,它将阻止quit_status := <-quit情况,直到quit中的值可用..这可能就是您在此实例中所追求的。

如果你想在select语句之后立即继续执行代码,你应该在一个单独的goroutine中运行这个select语句:

go func() {
    select {
    case quit_status := <-quit:
        ...

    }
}()

// Execution continues here immediately.

答案 1 :(得分:0)

正如@StephenWeinberg指出的那样,go中没有pass语句。只需简单地在频道碰到东西的情况下什么也不做。

select {
    case <-ch:
        // do something
    case <-time.After(2*time.Second):
        // timeout
    default:
        // do nothing aka pass
}