小编典典

“已声明且未使用”错误

go

我收到此错误消息,说我没有使用变量……但是在我的菜鸟眼中,看起来我在:

func Sqrt(x float64) float64 {

    z := float64(x);

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

    return z;
}

谁能指出我对语言的缺失?我认为这与=vs :=和作用域有关,但我不确定。


阅读 220

收藏
2020-07-02

共1个答案

小编典典

:=您的for循环声明了一个新的变量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
 }
2020-07-02