华域联盟 Golang Go语言中Select语句用法实例

Go语言中Select语句用法实例

本文实例讲述了Go语言中Select语句用法。分享给大家供大家参考。具体分析如下:

select 语句使得一个 goroutine 在多个通讯操作上等待。
select 会阻塞,直到条件分支中的某个可以继续执行,这时就会执行那个条件分支。当多个都准备好的时候,会随机选择一个。

复制代码 代码如下: package main

import "fmt"

func fibonacci(c, quit chan int) {

        x, y := 1, 1

        for {

                select {

                case c <- x:

                          x, y = y, x + y

                case <-quit:

   fmt.Println("quit")

                        return

                }

        }

}

func main() {

        c := make(chan int)

 quit := make(chan int)

 go func() {

  for i := 0; i < 10; i++ {

   fmt.Println(<-c)

  }

  quit <- 0

 }()

 fibonacci(c, quit)

}

默认选择

当 select 中的其他条件分支都没有准备好的时候,default 分支会被执行。

为了非阻塞的发送或者接收,可使用 default 分支:

select {
case i := <-c:
// use i
default:
// receiving from c would block
}

复制代码 代码如下: package main

import (

 "fmt"

 "time"

)

func main() {

        tick := time.Tick(1e8)

        boom := time.After(5e8)

        for {

                select {

                case <-tick:

                        fmt.Println("tick.")

                case <-boom:

                        fmt.Println("BOOM!")

                        return

                default:

                        fmt.Println("    .")

                        time.Sleep(5e7)

                }

        }

}

希望本文所述对大家的Go语言程序设计有所帮助。

本文由 华域联盟 原创撰写:华域联盟 » Go语言中Select语句用法实例

转载请保留出处和原文链接:https://www.cnhackhy.com/109953.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们