我是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 :(得分:2)
Go中没有while
循环。只有1个}}。如果我这样做:
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 }
(没有括号),我会得到更准确的消息,即第5行(while n < 10
)上的意外名称错误。我相信由于括号使用编译器将(非保留字)while
视为一种类型(函数调用或类型转换),但在意识到它不存在之前还有其他错误需要报告。因此,对你来说,这可能是一个令人困惑的信息。
除非您的代码中有其他错误,否则将while
重命名为while
应该有效。并放下括号。
答案 1 :(得分: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语法。拿Go Tour。