账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    golang channel 怎么判断是否读取完成(2)?
    • 昵称过于强大无法显示2020-01-01 00:00
    78
    0

    需求是判断p是否满足p=a^2+b^2+c^2

    package main
    
    import (
        "fmt"
        "math"
    )
    
    func abcasync(p int) bool {
        na := int(math.Sqrt(float64(p))) + 2
        channel := make(chan bool)
        for a := 0; a < na; a++ {
            for b := 0; b < na; b++ {
                go func() {
                    for c := 0; c < na; c++ {
                        if a*a+b*b+c*c == p {
                            channel <- true
                        }
                    }
                }()
    
            }
        }
        return <-channel
    }
    
    func main() {
        // d := abcasync(41)
        d := abcasync(23)
        fmt.Println(d)
    }
    

    这里要求,一旦满足if条件,就退出程序,以避免浪费计算时间,否则就要遍历所有的情况。那么,如何判断所有的协程都执行完了呢?
    会报错,请教如何解决?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部