管道的细节和课堂练习

package main

import “fmt”

func main(){
//1)创建一个intChan,最多可以存放3个int,演示存3数据到intChan,然后在取出这三个int
var intChan chan int
intChan = make(chan int,3)
intChan <- 10
intChan <- 20
intChan<-10
//因为intChan的容量为3,再存放会报告deadlock
//intChan<-50
num1 :=<- intChan
num2 :=<- intChan
num3 :=<- intChan
//因为intChan这时已经没有数据了,再取就会报告deadlock
//num4:=<-intChan
fmt.Printf(“num1=%v num1=%v num1=%v”,num1,num2,num3)

//2)创建一个mapChan,最多可以存放10个map[string]string的key-val,演示写入和读取。
var mapChan chan map[string]string
mapChan=make(chan map[string]string,10)
m1:=make(map[string]string,20)
m1["city1"]="北京"
m1["city2"]="天津"

m2:=make(map[string]string,20)
m2["hero1"]="宋江"
m2["hero2"]="武松"

m3:=make(map[string]string,20)
m3["hero3"]=".。。"

mapChan<-m1
mapChan<-m2
mapChan<-m3

//3)创建一个catChan,最多可以存放10个Cat结构体变量,演示写入和读取的用法
type Cat struct {
	Name string
	Age int
}


var catChan chan Cat
catChan = make(chan Cat ,10)

cat1 :=Cat{Name:"tom",Age:18,}
cat2 :=Cat{Name:"tom",Age:18,}
catChan<-cat1
catChan<-cat2

//取出
cat11:=<- catChan
cat22:=<- catChan
fmt.Println(cat11,cat22)

fmt.Println("________________________________________")
//定义一个存放任意数据类型的管道3个数据
//var allChan chan interface{}
allChan := make(chan interface{},3)

allChan<-10
allChan<-"tom jack"
cat:=Cat{"小花猫",4}
allChan<-cat

//我们希望获得到管道中的第三个元素,则先将前2个推出
<-allChan
<-allChan

newCat:=<-allChan//从管道中取出的Cat是什么?
fmt.Printf("newCat=%T,newCat=%v\n",newCat,newCat)
//下面的写法是错误的!编译不通过
//fmt.Printf("newCat.Name=%v",newCat.Name)
//使用类型断言
a:=newCat.(Cat)
fmt.Println("newCat.Name=%v",a.Name)

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值