Loading

channel与range、select

channel与range、select

image-20220830124935271

image-20220830125054482

package main

import "fmt"

func main() {
   c := make(chan int)

   go func() {
      for i := 0; i < 5; i++ {
         c <- i
      }

      //close可以关闭一个channel
      close(c)
   }()

   //可以使用range来迭代不断操作channel
   for data := range c {
      fmt.Println(data)
   }

   fmt.Println("Main Finished..")
}
package main

import "fmt"

func fibonacii(c, quit chan int) {
   x, y := 1, 1

   for {
      select {
      case c <- x:
         //如果c可写,则该case就会进来
         x = y
         y = x + y
      case <-quit:
         fmt.Println("quit")
         return
      }
   }
}

func main() {
   c := make(chan int)
   quit := make(chan int)

   //sub go
   go func() {
      for i := 0; i < 10; i++ {
         fmt.Println(<-c)
      }

      quit <- 0
   }()

   //main go
   fibonacii(c, quit)
}
posted @ 2022-08-30 13:02  suehoo  阅读(78)  评论(0)    收藏  举报