該函數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 的An Introduction to Programming in Go 中逐字提取的。我不確定問題是什么。
3 回答

忽然笑
TA貢獻1806條經驗 獲得超5個贊
你失蹤之間的新線}在年底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)
}
}
- 3 回答
- 0 關注
- 390 瀏覽
添加回答
舉報
0/150
提交
取消