go语言(22)---- range & select

  1. range
    利用range代替for循环
package main

import "fmt"

func main() {
   
	c := make(chan int)

	go func() {
   
		for i := 0;i < 5;i++ {
   
			c <- i

		}
		//close 关闭一个 channel
		close(c)
	}()

	//for {
   
	//	//ok 如果为true,表示 channel	没有关闭,如果为false,表示channel已经关闭
	//	if data,ok := <-c; ok{
   
	//		fmt.Println(data)
	//	} else {
   
	//		break
	//	}
	//
	//}

	//可以使用range来迭代不断操作chnanel
	for data := range c {
   
		fmt.Println(data)
	}
	fmt.Println("Main Finished....")
}

在这里插入图片描述

  1. Select
    单流程下一个go只能监控一个channel的状态,select可以完成监控多个channel的状态
package main

import "fmt"

func fibonaci(c,quit chan int)  {
   
	x,y := 1,1
	for  {
   

		select {
   
		case c <- x:
			//如果c可写,则该case就会进来
			x = y
			y = x + y
		case <-quit:
			fmt.Println("quit")
			return

		}

	}

}



func main() {
   
	c := make(chan int)
	quit := make(chan  int)
	//sub go
	go func() {
   
		for i := 0;i < 3 ;i++  {
   
			fmt.Print(<-c)

		}
		quit <- 0
	}()
	//main go
	fibonaci(c,quit)
}

在这里插入图片描述

相关推荐

  1. Go语言GC

    2024-01-28 06:26:05       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-28 06:26:05       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-28 06:26:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-28 06:26:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-28 06:26:05       18 阅读

热门阅读

  1. 蓝桥杯练习-简单1

    2024-01-28 06:26:05       34 阅读
  2. 调用GPT3接口的一些参数

    2024-01-28 06:26:05       25 阅读
  3. pytorch 卷积神经网络CNN

    2024-01-28 06:26:05       28 阅读
  4. Spring Cloud项目中实现分布式日志链路追踪

    2024-01-28 06:26:05       36 阅读
  5. 大数据处理系统的架构

    2024-01-28 06:26:05       35 阅读