• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

[GO]单向channel和应用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

var ch1 chan int       //ch1是一个正常的channel,不是单向的

var ch2 chan <- float64     //ch2是一个单向的channel,只用于写float64的数据

var ch3  <- chan  int     //ch3是一个单向的channel,只用于读取int数据

package main

func main() {
    //创建一个channel,双向的
    ch := make(chan int)
    //定义一个单向的只能写的channel
    var writech chan <- int = ch
    //但如果写成下面这样就会报错
    <-writech
    //定义一个单向的只能读的channel
    var readch <- chan int = ch
    //写成下面这样就会有问题
    readch<-555
    //下面都会正常编译通过
    writech <- 666
    <- readch
    //单向无法转换成双向
    var ch2  chan int = writech
}

 它的应用

package main

import "fmt"

//代表此channel只能写,不能读
func producer(out chan <- int)  {
    for i:=0; i<=10; i++ {
        out<-i*i
    }
    close(out)
}

func consumer(in <-chan int)  {
    for num := range in{
        fmt.Println("num = ", num)
    }
}

func main() {
    //创建一个双向通道ch
    ch  := make(chan int)

    //生产者,生产数字,写入channel
    go producer(ch) //chennel传参,引用传递

    //消费者,从channel里读取数字、然后打印
    consumer(ch)
}

执行的结果

num =  0
num =  1
num =  4
num =  9
num =  16
num =  25
num =  36
num =  49
num =  64
num =  81
num =  100

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Nginx反向代理+Go服务实践发布时间:2022-07-10
下一篇:
Gin-Go学习笔记三:Gin-Web框架JS分页发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap