2016-02-13 26 views
-1

我正在寫一個骰子滾動功能。爲了添加每個die的結果,我使用for循環將其添加到輸出變量。但是,當我嘗試構建時,出現錯誤;Go-爲什麼我的循環引發「意外的分號碼或新行」?

syntax error: unexpected semicolon or newline, expecting {

這引發了初始化for循環的行。 這裏是我的代碼:

for i := 0; i < [0]si; i++ { 
     output := output + mt.Intn([1]si) 
    } 

SI僅僅是一個int數組保存2個值和mt是我送給數學/蘭特,當我輸入它的名字。

+0

如果您提供了一個說明問題的最小完整源文件,那麼您可能會得到更好的答案,所以我們不需要猜測'mt'和'si'代表什麼。 – jochen

回答

0

你的循環有幾個問題:

  1. 使用方括號是奇數。在類型定義之外,這些位於切片/數組名稱之後,例如x[i]會給你片x的第個元素
  2. 循環體內沒有提及i,因此循環的每次迭代都會執行相同的操作。
  3. 你應該寫一個沒有冒號的output = output + ...。否則,在循環的每次迭代中聲明一個新變量output,並且在循環之後立即忘記,以便循環無效。

編譯器錯誤可能是由第一個問題引起的。

+0

哦,是的,它修復了它。我認爲,因爲類型名稱前有括號,所以變量也是一樣的。謝謝! – toastergod

0

在Go中訪問varname [idx]的數組,就像在大多數其他語言中一樣。只有在聲明一個類型爲si的新數組時,您才使用[size] si前綴語法。你得到的錯誤是因爲你的代碼在語法上是無效的。你正試圖將我與一個0 s的數組進行比較。