2015-11-17 48 views
0

我是Go的新學習者,這些問題困擾了我很多。我解決不了他們,你們能幫我一把嗎?GO中的函數體錯誤之外的非聲明語句

func Solution(A []int, B[]int, K int) int{ 
....... 
res = MaxInt32 
low = 0 
high = Min(900, largestId) //largestId is limited here 
mid = 0 

while(low <= high){ 
    mid = {low + high}/2   55 
    if(isAvailable(K, mid)){ 
     res := Min(res, mid) 
     high :=mid - 1 
    } else{ 
     low := mid + 1 
    } 

} 
return res       64 
}         65 

的錯誤顯示:

workspace/src/solution/solution.go:55: syntax error: unexpected =, expecting } 
workspace/src/solution/solution.go:64: non-declaration statement outside function body 
workspace/src/solution/solution.go:65: syntax error: unexpected } 

我不明白爲什麼這些問題來?

+0

Go中沒有'while'循環。用'for'改變它。 – tomasz

+0

是的,我剛剛查看了教程並注意到了這一點。謝謝 –

回答

0

例如,

package main 

import (
    "math" 
) 

func Min(a, b int) int { 
    if a > b { 
     return b 
    } 
    return a 
} 

func isAvailable(k, mid int) bool { 
    // ... 
    return true 
} 

func Solution(A []int, B []int, K int) int { 
    largestId := 0 
    // ... 
    res := math.MaxInt32 
    low := 0 
    high := Min(900, largestId) 

    for low <= high { 
     mid := (low + high)/2 
     if isAvailable(K, mid) { 
      res = Min(res, mid) 
      high = mid - 1 
     } else { 
      low = mid + 1 
     } 

    } 
    return res 
} 

func main() {} 

你需要了解基本的圍棋語法。以Go Tour

+0

是的,你是對的。因爲我是一個新的學習者,所以有我不知道的manys的東西。謝謝。 –

2

Go中沒有while循環。只有for。如果我這樣做:

package main 

func main() { 
    var n int 
    while (n < 10) { 
     n++ 
    } 
    return 
} 

我得到以下錯誤(類似於你):

untitled 3:6: syntax error: unexpected ++, expecting } 
untitled 3:8: non-declaration statement outside function body 
untitled 3:9: syntax error: unexpected } 

如果我做while n < 10(沒有括號)我得到更精確的信息,即一個意外名第5行錯誤(while)。我相信由於括號使用編譯器將(非保留字)while作爲類型(函數調用或類型轉換),但在意識到它不存在之前,還有其他錯誤需要報告。因此,也許,給你一個令人困惑的信息。

除非您的代碼中存在其他錯誤,否則應將while更改爲for。並放下括號。