Channel管道
1、 var 管道名字 chan 数据类型, eg:var intChan chan int
定义整形管道;
2、管道channel是引用类型,需要初始化才能写入数据,需要Make分配内存,
分配内存:intChan=make(chan int,3)
容量为3;
package main
import (
"fmt"
)
//管道类似于队列
func main(){
var intchan chan int //定义int类型的管道
intchan=make(chan int,3) //分配空间,足以说明intchan是引用类型,Intchan指向一个地址
// fmt.Println(intchan)
//向管道中存入数据,依次存放,超过容量则会出现死锁
intchan<-10
var num int =11
intchan<-num
intchan<-(-1)
fmt.Printf("intchan长度=%v,容量=%v\n",len(intchan),cap(intchan))
//向管道中取出数据,去除数据过多就会出现死锁
var num1,num2,num3 int
num1=<-intchan
num2=<-intchan
num3=<-intchan
fmt.Printf("%v,%v,%v\n",num1,num2,num3)
fmt.Printf("intchan长度=%v,容量=%v\n",len(intchan),cap(intchan))
}
在代码中管道进入是从右边进入channel<-数据
,从左边出去数据<-channel