1.channel的特点
- 类似Unix中的管道(pipe)
- 先进先出,类似队列
- 线程安全,多个goroutine同时访问,不需要加锁
- channel是有类型的,一个整数的channel只能存放整数
- 多个goroutine之间通过channel进行通信
- 支持任何类型
- channel在使用之前必须先进行初始化
2.channel的声明
-
int类型的声明
var intchan chan int intchan = make[chan int,10] intchan<-10
-
map类型的声明
var mapchan chan map[string]string mapchan = make(chan map[string]string, 10) m := make(map[string]string, 16) m["stu01"] = "001" m["stu02"] = "002" mapchan <- m
-
struct类型的声明
type student struct { name string } func main(){ var stuChan chan student stuChan = make(chan student, 10) stu := student{name: "stu01"} stuChan <- stu