亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

語法錯誤:函數體外的非聲明語句

語法錯誤:函數體外的非聲明語句

Go
收到一只叮咚 2021-08-23 15:48:02
該函數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 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

您在末尾的“}”makeEvenGeneratormain.

我修復了錯誤并將代碼發布到了操場上。


查看完整回答
反對 回復 2021-08-23
?
忽然笑

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)

    }

}


查看完整回答
反對 回復 2021-08-23
  • 3 回答
  • 0 關注
  • 390 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號