Go语言中Select语句用法实例


本文向大家介绍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语言程序设计有所帮助。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#yiidian.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。