关于golang select典型用法


本文摘自php中文网,作者藏色散人,侵删。

下面由golang教程栏目给大家介绍关于golang select典型用法,希望对需要的朋友有所帮助!

code

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

package main

 

import (

    "fmt"

    "time"

)

 

func chanTest(ch chan int) {

 

    for { //select外层需要循环        select {        case value, ok := <-ch:

            fmt.Println(value, ok, time.Now())            if ok == false {

                fmt.Println("chan已经关闭", time.Now()) //select要自己判断退出,如果是for..range 形式,在读取完了关闭的chanel后,退出循环

                return

            }        default:

            fmt.Println("chan 空了", time.Now())            time.Sleep(time.Second * 5) //分支的处理会阻塞整个select

        }

    }

}

 

func main() {

 

    var ch = make(chan int, 100)    go chanTest(ch)

 

    ch <- 1

    ch <- 2

    time.Sleep(time.Second * 2)

    ch <- 3

    ch <- 4

 

    time.Sleep(time.Second)    close(ch)    for {        time.Sleep(time.Second)

    }

}

需要注意的是,select的 defalut会丢弃数据,chan已满的情况,入chan的数据会被丢弃

以上就是关于golang select典型用法的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

embed小技巧-动态文件更新

golang 获取当前外网ip/地址/运营商

golang切片需要make吗

go语言的时间获取

golang无法导包怎么办?

什么是量化交易|量化交易平台

go 时间格式化 字符串格式化为时间格式

gfast v1.2.1 发布

cis 657 nachos system calls for file i/o

golang to docker

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...