【发布时间】:2016-02-15 19:34:30
【问题描述】:
作为一个先驱,我最近才刚刚开始学习 Go。这可能是我花一些时间的第三天。我已经处理这个错误几个小时了,但我不知道出了什么问题。
package main
import "fmt"
func main () {
nextFib := fibGenerator();
fmt.Println(nextFib());
fmt.Println(nextFib());
fmt.Println(nextFib());
fmt.Println(nextFib());
fmt.Println(nextFib());
}
func fibGenerator () uint {
var (
n uint = 0
back1 uint = 1
back2 uint = 0
)
_computeFib := func () uint {
if n == 0 {
n++
return 0
} else if n == 1 {
n++
return 1
}
fib := 1back + 2back // throws compile time error on this line
2back = 1back
1back = n
n++
return fib
}
return _computeFib
}
这是它抛出的错误: 语法错误:意外名称,需要分号或换行符或 }
这可能很简单,但由于我对 Go 的了解有限,我无法解决这个问题。任何帮助将不胜感激。
编辑: 这是最终的工作函数,除了重命名我的变量,就像接受的答案说我还必须让生成器返回一个返回 int 的函数。我也遇到了斐波那契逻辑错误。
func fibGenerator () func() uint {
var (
n uint = 0
back1 uint = 1
back2 uint = 0
)
_computeFib := func () uint {
if n == 0 {
n++
return 0
} else if n == 1 {
n++
return 1
}
fib := back1 + back2
back2 = back1
back1 = fib
n++
return fib
}
return _computeFib
}
【问题讨论】:
标签: go compiler-errors