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

  1. range
    利用range代替for循环
go 复制代码
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的状态
go 复制代码
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)
}
相关推荐
YA33314 分钟前
java设计模式二、工厂
java·开发语言·设计模式
今天头发还在吗18 分钟前
【Go】:mac 环境下GoFrame安装开发工具 gf-cli——gf_darwin_arm64
macos·golang·go·gf-cli
金色天际线-21 分钟前
Nginx 优化与防盗链配置指南
java·后端·spring
逐雨~22 分钟前
9.8C++作业
开发语言·c++
我爱挣钱我也要早睡!1 小时前
Java 复习笔记
java·开发语言·笔记
Yang-Never2 小时前
Kotlin协程 -> Job.join() 完整流程图与核心源码分析
android·开发语言·kotlin·android studio
TomCode先生4 小时前
c#动态树形表达式详解
开发语言·c#
高-老师5 小时前
基于R语言的物种气候生态位动态量化与分布特征模拟
开发语言·r语言·物种气候
大翻哥哥5 小时前
Python 2025:量化金融与智能交易的新纪元
开发语言·python·金融
weixin_437830946 小时前
使用冰狐智能辅助实现图形列表自动点击:OCR与HID技术详解
开发语言·javascript·ocr