package main import ( "fmt" "sync" ) // 通道的声明 var c chan int //需要指定通道中元素的类型,引用类型,需要初始化 var wait sync.WaitGroup func noBufferedChannel() { c = make(chan int) //不带带缓冲区的通道初始化 wait.Add(1) go func() { defer wait.Done() x := <-c //接受 fmt.Println("从通道C中取得值:", x) }() c <- 10 //发送 wait.Wait() } func bufferedChannel() { c = make(chan int, 1) //带缓冲区的初始化 c <- 10 fmt.Println("10发送到通道中了") x := <-c fmt.Println("从通道C中取到值", x) c <- 20 fmt.Println("20发送到通道中了") z := <-c fmt.Println("从通道C中取到值", z) close(c) } func main() { bufferedChannel() }