Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go语言Select语句

深入剖析Go语言中的Select语句

作者:奔跑的蜗牛.

select是Go中的一个控制结构,类似于switch语句,本文主要介绍了深入剖析Go语言中的Select语句,具有一定的参考价值,感兴趣的可以了解一下

一、select多路复用

1、select说明

具体格式如下:

select {
    case <- chan1:
    //如果chan1成功读到数据,则进行该case处理语句
    case chan2 <- 1 :
       //如果成功向chan2写入数据,则进行该case处理语句
    default :
    //如果上面都没有成功,则进入default处理流程
    
}

2、select的使用 

package main

import (
    "fmt"
    "time"
)

func main() {
    //在某些场景下我们需要同时从多个通道接收数据,这个时候就可以用到golang中给我们提供的select多路复用

    //定义一个管道10个数据int
    intChan := make(chan int,10)
    for i :=0;i<10;i++ {
        intChan <- i
    }

   //2.定义一个管道 5个数据string
	stringChan := make(chan string, 5)
	for i := 0; i < 5; i++ {
		stringChan <- "hello" + fmt.Sprintf("%d", i)
	}
	//使用select来获取channel里面的数据的时候不需要关闭channel
	for {
		select {
		case v := <-intChan:
			fmt.Printf("从 intChan 读取的数据%d\n", v)
			time.Sleep(time.Millisecond * 50)
		case v := <-stringChan:
			fmt.Printf("从 stringChan 读取的数据%v\n", v)
			time.Sleep(time.Millisecond * 50)
		default:
			fmt.Printf("数据获取完毕")
			return //注意退出...
		}
	}
}

 到此这篇关于深入剖析Go语言中的Select语句的文章就介绍到这了,更多相关Go语言Select语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文