zoukankan      html  css  js  c++  java
  • 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
    
    
    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    LLVM 笔记(二)—— PHI node
    Ubuntu,sublime快速启动
    ubuntu14.04安装Thinkphp
    ubuntu,scrapy安装
    ubuntu,sublime text 3中文输入的问题
    ubuntu安装beatifulsoup,pip,creepy
    ubuntu,系统设置无法打开
    Ubuntu14.04安装完成的基本配置
    在Sublime Text 3中添加snippet
    领航工作室启用新域名啦!
  • 原文地址:https://www.cnblogs.com/Frank99/p/15374543.html
Copyright © 2011-2022 走看看