【问题标题】:"declared and not used" Error“已声明但未使用”错误
【发布时间】:2013-08-14 20:28:15
【问题描述】:

我收到这个错误,说我没有使用变量……但在我的菜鸟眼中,我看起来像:

func Sqrt(x float64) float64 {

    z := float64(x);

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

    return z;
}

谁能指出我对这种语言的遗漏?我认为这与=:= 和范围有关,但我不确定。

【问题讨论】:

    标签: go


    【解决方案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
     }
    

    【讨论】:

    • 一般=:=有什么区别?
    • = 为现有变量赋值,而:= 声明一个新变量并为其赋值。如果你知道 C(或朋友),这有点像 foo = 42int foo = 42
    • @dubeegee a = b 表示“让 a 具有 b 的值”。 a := b 表示“声明一个具有 b 类型和值的变量 a”。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 2018-03-11
      • 2018-03-29
      • 2015-08-12
      • 2021-12-14
      • 2021-05-15
      • 1970-01-01
      相关资源
      最近更新 更多