chan 用于不同线程通信,下面是学习范例
package main
import (
"fmt"
"time"
)
func main(){
教学1:线程
//go fmt.Println("6")
//fmt.Println("7")
//time.Sleep(1 * time.Second)//防止子线程没执行完
教学2:匿名函数线程
//var i = 3
//go func(a int) {
// fmt.Println("4")
// fmt.Println(a)
// fmt.Println("1")
//}(i)
//fmt.Println("2")
//time.Sleep(1 * time.Second)//防止子线程没执行完
教学3:无缓存的chan,赋值后要立刻使用
//ch:=make(chan int)
//go func() {
// v := <-ch
// fmt.Println("1")
// fmt.Println(v)
//}()
//ch<-15
//fmt.Println("2")
//time.Sleep(1 * time.Second)//防止子线程没执行完
教学4:带有缓存的chan,
//ch:=make(chan int,1)
//ch<-15
//go func() {
// v := <-ch
// fmt.Println("1")
// fmt.Println(v)
//}()
//fmt.Println(12)
//time.Sleep(1 * time.Second)//防止子线程没执行完
教学5:带有缓存的chan,缓存满了,会死锁
//ch:=make(chan int,1)
//ch<-15
//ch<-14
//go func() {
// v := <-ch
// fmt.Println("1")
// fmt.Println(v)
//}()
//fmt.Println(12)
//time.Sleep(1 * time.Second)//防止子线程没执行完
}