首页  >  文章  >  后端开发  >  尽管使用了“prev”变量,为什么我的 Go 代码会报告“已声明且未使用”错误?

尽管使用了“prev”变量,为什么我的 Go 代码会报告“已声明且未使用”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-31 20:14:02148浏览

Why Does My Go Code  Report a

尽管使用了变量,Go 中仍存在声明且未使用的错误

在以下 Go 代码中,编译器报告变量 prev 上的“声明且未使用”错误。

<code class="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())
    }
}</code>

理解错误

编译器正确识别变量 prev 已声明但未使用。这意味着代码中永远不会引用 fibonacci 函数中声明的 prev 变量。

解决问题

可以通过修改 fibonacci 函数以正确使用 prev 变量来解决该错误。代码的目的可能是使用 prev := temp 赋值来修改 prev 变量。但是,此赋值创建了一个名为 prev 的新局部变量,该变量对周围作用域是隐藏的。相反,正确的赋值应该使用不带声明关键字的 = 运算符:

<code class="go">func fibonacci() func() int {
    prev := 0
    curr := 1
    return func() int {
        temp := curr
        curr := curr + prev
        prev = temp
        return curr
    }
}</code>

通过从第二个 prev 赋值中删除声明关键字 (:=),代码可以正确修改继承的 prev 变量。这解决了编译器错误并允许代码按预期运行。

以上是尽管使用了“prev”变量,为什么我的 Go 代码会报告“已声明且未使用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn