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
    
    
    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    开发实例
    一张图解析FastAdmin中的表格列表的功能
    fastAdmin进阶
    detailFormatter bootstrapTable
    responseHandler
    自定义PDO封装类
    bootstrapTable
    Thread Safety
    FastAdmin 基本知识流程一栏
    thinkphp5 Request请求类
  • 原文地址:https://www.cnblogs.com/Frank99/p/15374543.html
Copyright © 2011-2022 走看看