package main
import (
"fmt"
"time"
)
func main() {
c:=make(chan int,3)
fmt.Println("len(c)=",len(c),"cap(c)=",cap(c))
go func() {
defer fmt.Println("子go线程结束 ")
for i:=0;i<5;i++{
c <- i
time.Sleep(time.Second) //区分和ftm打印时限,下同
fmt.Println("子go程序正在运行发送的元素为:",i,"len(c)=",len(c),"cap(c)=",cap(c))
}
}()
time.Sleep(2*time.Second)
for i:=0;i<5;i++{
time.Sleep(time.Second)
fmt.Println(<-c)
}
fmt.Println("main 结束 ")
}
运行结果:
len(c)= 0 cap(c)= 3
子go程序正在运行发送的元素为: 0 len(c)= 1 cap(c)= 3
子go程序正在运行发送的元素为: 1 len(c)= 2 cap(c)= 3
子go程序正在运行发送的元素为: 2 len(c)= 3 cap(c)= 3
0
子go程序正在运行发送的元素为: 3 len(c)= 3 cap(c)= 3
1
2
子go程序正在运行发送的元素为: 4 len(c)= 2 cap(c)= 3
子go线程结束
3
4
main 结束