Golang 双向, 单向 channel 爬取 股票信息 chan <-, 解析 <-chan
2021/10/6 23:11:29
本文主要是介绍Golang 双向, 单向 channel 爬取 股票信息 chan <-, 解析 <-chan,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
channel 提供了一种通信机制, 定向 py, java 中的 消息队列 package main import "fmt" func main() { // 定义一个 channel 用来通信 他是引用类型 默认 nil var msg chan string // byte // slice, map , channel 使用 make 进行初始化 msg = make(chan string) // 第一种初始化方式: 无缓冲 msg = make(chan string, 1) // 带缓冲空间 if msg != nil{ msg <- "frank" } data := <- msg fmt.Println(data) } // 进一步学习 package main import ( "fmt" "sync" ) func consumer(queue chan string){ defer wg.Done() data := <- queue fmt.Println(data) } var wg = sync.WaitGroup{} func main() { wg.Add(2) var msg chan string = make(chan string, 1) msg <- "frank" go consumer(msg) msg <- "tom" go consumer(msg) wg.Wait() } // for range 遍历 channel package main import ( "fmt" "sync" ) func consumer(queue chan string){ defer wg.Done() for data:=range queue { fmt.Println(data) } } var wg = sync.WaitGroup{} func main() { wg.Add(1) var msg chan string = make(chan string, 1) msg <- "frank" go consumer(msg) msg <- "tom" close(msg) // msg <- "may" // send on closed channel // 已经关闭的 channel 消费者端 还可以继续取数据,但是 发送端 不可以再发送数据 wg.Wait() } // 优雅写法 for { data, ok := <- queue if(!ok) { break } fmt.Println(data) } msg := make(chan int, 1) // 双向的 channel 这不就是双端队列??? var msg = make(chan<- int, 1) // 这就是只能往里面放值的 单向的channel var msg <-chan int // 这就是只能从里面取值的 单向 channel // 一般 只在 消费 / 生产 方法里 设置 单向的 chan, 主的还是 双向 chan
这篇关于Golang 双向, 单向 channel 爬取 股票信息 chan <-, 解析 <-chan的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南