Golang实现select语句的程序

Golang实现select语句的程序

Golang的Select语句类似于Switch语句,Switch语句根据情况选择输出,但在这里,根据通道中通讯的速度选择输出。

语法

    func make ([] type, size, capacity)

Golang中的 make 函数用于创建数组/映射,它接受要创建的变量类型、大小和容量作为参数。

    time.Sleep()

此函数属于时间包。在这里,”sleep”代表函数的含义,表示它将阻塞goroutine执行一定的时间。

    time.Second()

这个函数是时间包的一部分,它主要用于表示秒的持续时间。

算法

  • 步骤1 - 在程序中导入所需的包

  • 步骤2 - 创建一个main函数,在其中使用内置函数创建两个通道

  • 步骤3 - 使用go routine向通道发送数据,使用sleep在select语句退出之前接收消息

  • 步骤4 - 使用select语句从接收消息的任何通道获取输出到控制台

  • 步骤5 - 使用fmt包的Println函数执行打印语句

示例1

在这个例子中,我们将通过创建两个通道并使用go routines将数据发送到通道来实现select语句。select语句将用于从通道接收数据,接收到的数据将首先在控制台上打印出来。

    package main

    import (
        "fmt"
        "time"
    )

    func main() {    
        channel1 := make(chan string)
        channel2 := make(chan string)

        go func() {
            time.Sleep(2 * time.Second)
            channel1 <- "好"
        }()

        go func() {
            time.Sleep(3 * time.Second)
            channel2 <- "早上好"
        }()

        select {
        case msg1 := <-channel1:
            fmt.Println(msg1)
        case msg2 := <-channel2:
            fmt.Println(msg2)
        }
    }

输出

示例2

在这个示例中,将创建两个通道。用go routines将数据发送到通道,然后使用select语句从通道接收输出作为收到的数据。但在这里,如果没有接收到消息,也将用默认语句。

    package main

    import (
       "fmt"
       "time"
    )

    func main() {
        channel1 := make(chan string)  
        channel2 := make(chan string)

        go func() {
           time.Sleep(2 * time.Second)  
           channel1 <- "好"
        }()

        go func() {
           time.Sleep(3 * time.Second) 
           channel2 <- "早上好"
        }()

        select {
           case msg1 := <-channel1:
               fmt.Println(msg1)
           case msg2 := <-channel2:
               fmt.Println(msg2)
           default:
               fmt.Println("没有接收到任何消息")
    }

输出

    没有接收到任何消息

结论

我们编译并执行了使用两个示例实现select语句的程序。在这两个示例中,我们使用了类似的通道,但使它们不同的是在第二个示例中,如果通道未接收到消息,还使用了默认语句。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程