Go 之旅 #23:返回的奇怪行为

围棋之旅#23:


package main


import (

    "fmt"

    "math"

)


func pow(x, n, lim float64) float64 {

    if v := math.Pow(x, n); v < lim {

        return v


    } else {

        fmt.Printf("%g >= %g\n", v, lim)

    }

    // can't use v here, though

    return lim

}


func main() {

    fmt.Println(

        pow(3, 2, 10),

        pow(3, 3, 20),

    )

}

结果是:


27 >= 20

9 20

如果我注释掉该return v行,结果是:


27 >= 20

10 20

为什么会发生这种情况?为什么第一次pow()调用的结果不等于27 >= 20和10?


幕布斯7119047
浏览 169回答 1
1回答

叮当猫咪

您向第一次调用传递了 10 的限制,因此返回的数字是 10 而不是 20。将其更改为func main() {&nbsp; &nbsp; fmt.Println(&nbsp; &nbsp; &nbsp; &nbsp; pow(3, 2, 20),&nbsp; &nbsp; &nbsp; &nbsp; pow(3, 3, 20),&nbsp; &nbsp; )}删除该return v行时,您将看到以下输出:27 >= 2020 20
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go