zoukankan      html  css  js  c++  java
  • [GO]使用select实现斐波那契

    package main
    
    import "fmt"
    
    func fibonacci(ch chan <- int, quit <- chan bool)  {
        x, y := 1, 1
        for true {
            select {
            case ch<-x:
                x, y = y, x+y
            case flag := <-quit:
                fmt.Println("flag = ", flag)
                return
            }
        }
    }
    
    func main() {
        ch := make(chan int)
        quit := make(chan bool)
        go func() {
            for i:=0; i<8; i++ {
                num := <-ch
                fmt.Println("num = ",num)
            }
            quit <- true //可以退出,即给quit赋了一个值,之前都是一直在阻塞
        }()
        fibonacci(ch, quit)
    }

    执行的结果

    num =  1
    num =  1
    num =  2
    num =  3
    num =  5
    num =  8
    num =  13
    num =  21
    flag =  true
  • 相关阅读:
    EM
    te2
    te
    XLnet
    GPT
    40.Properties
    38.特殊操作流
    37.I/O流
    35.File
    day68日考
  • 原文地址:https://www.cnblogs.com/baylorqu/p/9679305.html
Copyright © 2011-2022 走看看