登录
首页 >  Golang >  Go问答

golang 的channel配合select使用的意义

来源:SegmentFault

时间:2023-02-24 21:21:20 138浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《golang 的channel配合select使用的意义》,介绍一下go,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我不大明白下面两种写法在go里面有什么不同

func MySelect() {
    ch := make(chan int, 10)

    a := 

func MySelect() {
    ch := make(chan int, 10)

    select {
    case a := 

第二种使用了select使用有什么好处呢?

正确答案

就你写的这两个示例,运行上没有区别

考虑下面的情况:
1、如果 ch 持续不断有数据写入,要如何读取?(很明显需要使用 for 循环)如下:

func MySelect(ch chan int) {
    for {
        a := 

2、如果 MySelect() 要多读取并处理另一个持续不断写入数据的 channel 呢?下面的代码是否可以实现?

func MySelect(ch chan int, ch2 chan int) {
    for {
        a := 

很明显不行,因为

a :=  可能会阻塞后面的代码执行。这时候就要用到 
select
了,如下:

func MySelect(ch chan int, ch2 chan int) {
    for {
        select {
        case a := 

ch
ch2
无论哪个先有数据被读取到都不会产生阻塞

大概就是这个意思

以上就是《golang 的channel配合select使用的意义》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表