golang代码 future promise

时间:2020-05-27
本文章向大家介绍golang代码 future promise,主要包括golang代码 future promise使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
    func longTimeRequest() <-chan int32 {
        r := make(chan int32)
        go func() {
        time.Sleep(time.Second * 3) // 模拟一个工作负载
        r <- rand.Int31n(100)
    }()
        return r
    }

    func sumSquares(a, b int32) int32 {
        return a*a + b*b
    }

    func main() {
        rand.Seed(time.Now().UnixNano())

        a, b := longTimeRequest(), longTimeRequest()
        fmt.Println(sumSquares(<-a, <-b))
    }

    --------------------------------------------------------------------------------

    func longTimeRequest(r chan<- int32)  {
        time.Sleep(time.Second * 3) // 模拟一个工作负载
        r <- rand.Int31n(100)
    }

    func sumSquares(a, b int32) int32 {
        return a*a + b*b
    }

    func main() {
        rand.Seed(time.Now().UnixNano())

        ra, rb := make(chan int32), make(chan int32)
        go longTimeRequest(ra)
        go longTimeRequest(rb)

        fmt.Println(sumSquares(<-ra, <-rb))

        //也可以只用一个channel:
        results := make(chan int32, 2)         // 缓冲与否不重要
        go longTimeRequest(results)
        go longTimeRequest(results)

        fmt.Println(sumSquares(<-results, <-results))
    }

原文地址:https://www.cnblogs.com/ts65214/p/12976357.html