[英]Syntax Error: Non-declaration statement outside function body
函數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
}
當我運行它時,我得到錯誤syntax error: unexpected func, expecting semicolon or newline
並且Non-declaration statement outside function body
。
該代碼完全取自Caleb Doxsey的《 Go編程入門》。 我不確定是什么問題。
您在makeEvenGenerator
末尾的“}”和main
的“ func”之間缺少換行符。
我更正了錯誤,並將代碼發布到了操場上 。
在makeEvenGenerator
和func main
末尾的}
之間缺少新行。
該模式的另一種替代方法是使用通道不返回函數:
func evenGenerator() <-chan uint {
ch := make(chan uint)
go func() {
i := uint(0)
for {
ch <- i
i += 2
}
}()
return ch
}
func main() {
evens := evenGenerator()
for i := 0; i < 3; i++ {
fmt.Println(<-evens)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.