go chan通道详解

通道相当于一个队列,他的值是从零开始的。当通道的值为零时,可以看做为一个无值的队列,反之,为一个有值的队列,它可以保证并发的安全性,并且是先进先出的。

声明方式

example 1
package main

import "fmt"

func main() {
  num := make(chan int, 3) //声明一个容量为3的int类型的通道
  num <- 3					//传入值
  num <- 2
  num <- 1
  //遍历通道,取出加入的值
  for i:=1;i<=3;i++{
  v := <-num
  fmt.Printf("The %d value received from channel num: %v\n",
    i,v)}
}

结果

The 1 value received from channel num: 3
The 2 value received from channel num: 2
The 3 value received from channel num: 1
Process exiting with code: 0

通道在被声明好容量之后就不会发生变化了。当进入通道满的时候就不会接收新的值,现在这个时候通道是阻塞的状态。当通道里边的值被消耗了。才会有新值加入。

通道分类

通道分为单向通道还有双向通道

  1. chan <- int //此为只能接收 不能发送的通道
  2. <-chan int //只能发送不能接收的通道
  3. chan int //即可以接收也可以发送
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值