在以下 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中文网其他相关文章!