“声明并且未使用”错误

时间:2013-08-14 20:28:15

标签: go

我得到这个错误,说我没有使用变量......但是对于我的noob眼睛,它看起来像我:

func Sqrt(x float64) float64 {

    z := float64(x);

    for i := 0; i < 10; i++ {
        z := z - (z*z - x) / (2 * z);
    }

    return z;
}

有谁可以指出我对这种语言缺少什么?我认为这与=:=和范围有关,但我不确定。

2 个答案:

答案 0 :(得分:12)

for-loop中的:=声明了一个新变量z,它会遮蔽外部z。将其变为普通=以解决问题。

func Sqrt(x float64) float64 {

    z := x

    for i := 0; i < 10; i++ {
        z = z - (z*z - x) / (2 * z);
    }

    return z;
}

顺便说一下,为了获得相同的精度和更快的速度,您可以尝试以下实现,它会同时执行两个步骤:

func Sqrt(x float64) float64 {
    z := x
    for i := 0; i < 5; i++ {
        a := z + x/z
        z = a/4 + x/a
    }
    return z
 }

答案 1 :(得分:4)

这是另一种查看函数的方法

func Sqrt(x float64) (z float64) {
    z = x
    for i := 0; i < 10; i++ {
        z = z - (z*z - x)/(2*z);
    }
    return
}