Omi*_*mid 0 closures function go
该函数makeEvenGenerator应该返回一个以顺序方式生成偶数的函数:
package main
import "fmt"
func makeEvenGenerator() func() uint {
i := uint(0)
return func() (ret uint) {
ret = i
i += 2
return
}
}func main() {
nextEven := makeEvenGenerator()
fmt.Println(nextEven()) // 0
fmt.Println(nextEven()) // 2
fmt.Println(nextEven()) // 4
}
Run Code Online (Sandbox Code Playgroud)
当我运行它,我得到的错误syntax error: unexpected func, expecting semicolon or newline和Non-declaration statement outside function body.
该代码是从Caleb Doxsey的Go编程简介中逐字记录的.我不确定问题是什么.
有关分号的规则.
形式语法使用分号";" 作为许多作品的终结者.Go程序可以使用以下两个规则省略大多数这些分号:
- 当输入被分解为标记时,如果行的最终标记是整数,浮点,虚数,符文或字符串文字的标识符,则在非空行的末尾自动将分号插入标记流中.关键字break,continue,fallthrough或return其中一个运算符和分隔符++, - ,),]或}
- 为了允许复杂语句占用一行,在结束")"或"}"之前可以省略分号.
错误在这里,
}func main() {
Run Code Online (Sandbox Code Playgroud)
写,
}
func main() {
Run Code Online (Sandbox Code Playgroud)