Go - Python的"pass"相当于什么?

tal*_*ees 10 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)
        }
Run Code Online (Sandbox Code Playgroud)

jim*_*imt 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.
Run Code Online (Sandbox Code Playgroud)

  • 没有理由在另一个goroutine中运行它.你可以把`default:`然后放在下一行关闭select语句."传递"的go版本就是什么都没有. (4认同)