2015-11-14 36 views
1

就像我剛剛剛剛開始學習Go的前兆一樣。這可能是我第三天花一些時間在上面。我一直在處理這個錯誤幾個小時,現在我無法弄清楚什麼是錯誤的。語法錯誤:意外的名稱,期待分號或換行或}

package main 

import "fmt" 

func main() { 
    nextFib := fibGenerator(); 
    fmt.Println(nextFib()); 
    fmt.Println(nextFib()); 
    fmt.Println(nextFib()); 
    fmt.Println(nextFib()); 
    fmt.Println(nextFib()); 
} 

func fibGenerator() uint { 
    var (
    n uint = 0 
    back1 uint = 1 
    back2 uint = 0 
) 

    _computeFib := func() uint { 
    if n == 0 { 
     n++ 
     return 0 
    } else if n == 1 { 
     n++ 
     return 1 
    } 
    fib := 1back + 2back // throws compile time error on this line 
    2back = 1back 
    1back = n 
    n++ 
    return fib 
    } 

    return _computeFib 
} 

這是它引發的錯誤: 語法錯誤:意外的名字,期待分號或換行或}

這也可能是簡單的東西,但我的圍棋知識有限,我不能把我的手指在上面。任何幫助,將不勝感激。

編輯: 這是最後的工作職能,除了重命名我的變量,如接受的答案說,我也不得不使發電機返回返回一個int的函數。我也有一個錯誤w/Fibonacci邏輯。

func fibGenerator() func() uint { 
    var (
    n uint = 0 
    back1 uint = 1 
    back2 uint = 0 
) 

    _computeFib := func() uint { 
    if n == 0 { 
     n++ 
     return 0 
    } else if n == 1 { 
     n++ 
     return 1 
    } 
    fib := back1 + back2 
    back2 = back1 
    back1 = fib 
    n++ 
    return fib 
    } 

    return _computeFib 
} 

回答

1

您試圖訪問的變量稱爲1back2back但你的變量實際上被稱爲back1back2

+0

男人謝謝你,真是愚蠢....一定是一個重構錯誤。 – John

+0

沒問題。它發生了:)好東西有一個編譯器捕捉這些小錯誤。 – vially

相關問題