英文:
syntax error: unexpected name, expecting semicolon or newline or }
问题
作为前导,我最近才开始学习Go语言。这可能是我花了第三天的时间。我已经花了几个小时来解决这个错误,但是我无法找出问题出在哪里。
这是抛出的错误:
语法错误:意外的名称,期望分号或换行符或}
可能是一些简单的问题,但是由于我对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
}
英文:
Just as a precursor I've just barely started learning Go recently. This is probably my 3rd day spending some time on it. I've been working with this error for a couple hours now, and I can't figure out what is wrong.
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
}
This is the error it throws:
syntax error: unexpected name, expecting semicolon or newline or }
It's probably something simple, but with my limited knowledge in Go I can't put my finger on it. Any help would be appreciated.
EDIT:
This is the final working function besides renaming my variables like the accepted answer says I also had to make the generator return a function that returns an int. I also had an error w/ Fibonacci logic.
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
}
答案1
得分: 2
重构问题搁置不谈,记住在Go语言中,变量必须以字母开头,而不是数字。back1
和back2
是有效的Go变量,但1back
和2back
不是。请参考https://golang.org/ref/spec#Identifiers。
英文:
Refactoring issues aside, keep in mind that variables in go must begin with a letter, not a number. back1
and back2
are valid go variables, but 1back
and 2back
are not. See https://golang.org/ref/spec#Identifiers.
答案2
得分: 1
你正在尝试访问名为1back
和2back
的变量,但实际上你的变量名应该是back1
和back2
。
英文:
You are trying to access variables called 1back
and 2back
but your variables are actually called back1
and back2
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论