英文:
non-declaration statement outside function body error in GO
问题
我是一个新学习者,正在学习Go语言,这些问题让我很困惑。我无法解决它们,你们能帮我一下吗?
func Solution(A []int, B []int, K int) int {
.......
res = MaxInt32
low = 0
high = Min(900, largestId) //largestId在这里有限制
mid = 0
for low <= high {
mid = (low + high) / 2
if isAvailable(K, mid) {
res = Min(res, mid)
high = mid - 1
} else {
low = mid + 1
}
}
return res
}
错误显示为:
workspace/src/solution/solution.go:55: 语法错误: 意外的 =,期望 }
workspace/src/solution/solution.go:64: 非声明语句在函数体外
workspace/src/solution/solution.go:65: 语法错误: 意外的 }
我不明白为什么会出现这些问题?
英文:
I am a new learner with Go, and these problems confused me a lot. I cannot solve them, could you guys give me a hand?
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
The errors show:
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 }
I don't understand why these problems come?
答案1
得分: 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
应该可以解决问题。并且去掉括号。
英文:
There's no while
loop in Go. Only for
. If I do this:
package main
func main() {
var n int
while (n < 10) {
n++
}
return
}
I get the following error (similar to yours):
untitled 3:6: syntax error: unexpected ++, expecting }
untitled 3:8: non-declaration statement outside function body
untitled 3:9: syntax error: unexpected }
If I do while n < 10
(no parentheses) I get more precise message, i.e. an unexpected name error on line 5 (while
). I believe due to a bracket usage compiler treats (non-reserved word) while
as a type (function call or type conversion), but before realising it's non-existent there are other errors to report. Hence, maybe, a confusing message for you.
Unless you have other errors in your code, renaming while
to for
should work. And drop the brackets.
答案2
得分: 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之旅。
英文:
For example,
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() {}
You need to learn basic Go syntax. Take the Go Tour.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论