去游乐场 # 23 返回问题

http://tour.golang.org/#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

但不是


9

27 >= 20 20


一只斗牛犬
浏览 224回答 2
2回答

慕森王

您预期结果的代码是&nbsp; &nbsp; func main(){&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(pow(3, 2, 10))&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(pow(3, 3, 20))&nbsp; &nbsp; }“fmt.Println”中的所有“pow”函数被调用后,“fmt.Println”打印pows的结果

qq_花开花谢_0

因为这两个调用pow(..)都在fmt.Println()被用作它的参数之前被评估过。你所期望的将是输出func main() {&nbsp; &nbsp; fmt.Println(pow(3, 2, 10))&nbsp; &nbsp; fmt.Println(pow(3, 3, 20))}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go