gpt4 book ai didi

go - Go 之旅 #23 : weird behaviour with return

转载 作者:数据小太阳 更新时间:2023-10-29 03:17:48 27 4
gpt4 key购买 nike

A Tour of Go #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 >= 2010

最佳答案

正如@larsmans 已经回答的那样,您将 10 的限制传递给第一次调用,因此返回的数字是 10 而不是 20。

改成

func main() {
fmt.Println(
pow(3, 2, 20),
pow(3, 3, 20),
)
}

删除 return v 行时,您将看到以下输出:

27 >= 20
20 20

关于go - Go 之旅 #23 : weird behaviour with return,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19297736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com