该函数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 关注
- 339 浏览
添加回答
举报
0/150
提交
取消