Go - 声明并且没有使用错误,当我认为我已经对变量这样做了

Mat*_*w H 7 go

这段代码出了什么问题?

package main

import "fmt"

// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
    prev := 0
    curr := 1
    return func() int {
        temp := curr
        curr := curr + prev
        prev := temp
        return curr
    }
}

func main() {
    f := fibonacci()
    for i := 0; i < 10; i++ {
        fmt.Println(f())
    }
}
Run Code Online (Sandbox Code Playgroud)

prog.go:13:上一个宣布但未使用

Lil*_*ard 15

您声明了一个名为变量的变量prev,然后从未使用它.

具体来说,你说prev := temp.这是在当前作用域中创建一个新的局部变量prev.我假设你只想说prev = temp,它修改了prev从周围范围继承的变量.同样,你可能想curr = curr + prev在前一行说,而不是使用:=.

  • 详细说明,`=`赋予左边的权限,`:=`创建一个名为left的*new*变量,并为其赋予右边项目的值. (10认同)