go 语言 chan读写数据

示例demo51
package main

import (
  "fmt"
  "time"
)

func sendData(ch chan int) {
  //把数据写到通道里
  for i := 0; i < 20; i++ {
    ch <- i
    fmt.Println("push data:", i)
  }
}

func getData(ch chan int) {
  //从通道里读取数据
  var b int
  for {
    b = <-ch
    fmt.Println("get data:", b)
    time.Sleep(time.Second)
  }
}

func main() {
  ch := make(chan int, 10) //定义一个int类型chan 长度为10 写到10满了 就写不进去了 缓冲区就是10
  go sendData(ch) //数据写到chan
  go getData(ch) //从chan读取数据
  time.Sleep(10 * time.Second) //休眠10秒,如果不休眠,主进程很快结束就看不到协程输出的值的
}
posted @ 2022-08-21 18:58  5656923  阅读(270)  评论(0)    收藏  举报