英文:
golang ,strange error around braces or return
问题
func isPrimeNumber(possiblePrime int) bool {
for underPrime := 2; underPrime < possiblePrime; underPrime++ {
if possiblePrime%underPrime == 0 {
return false
}
}
return true
}
func findPrimeNumbers(channel chan int) {
for i := 2; ; /* 无限循环 */ i++ {
// 你的代码放在这里
if isPrimeNumber(i){
channel <- i // 在这一行出现错误
}
assert(i < 100) // i 害怕高度
}
}
我在这一行出现错误,但是无法找出问题所在,需要帮助。谢谢。
英文:
func isPrimeNumber(possiblePrime int) bool {
for underPrime := 2; underPrime < possiblePrime; underPrime++ {
if possiblePrime%underPrime == 0 {
return false
}
}
return true
}
func findPrimeNumbers(channel chan int) {
for i := 2; ; /* infinite loop */ i++ {
// your code goes here
if isPrimeNumber(i){
chan <- i <========error on this line
}
assert(i < 100) // i is afraid of heights
}
}
I got error on this but could not figure it out, need help. thanks
syntax error: unexpected semicolon or newline, expecting {
FAIL
答案1
得分: 1
使用channel <- i
而不是chan <- i
。
在函数定义中(channel chan int
),channel
是参数的名称,chan int
是类型。为了澄清,您的函数可以重写为以下形式:
func findPrimeNumbers(primeNumberChannel chan int) {
for i := 2; ; i++ {
if isPrimeNumber(i){
primeNumberChannel <- i
}
}
}
另外,在Go语言中没有assert
语句(http://golang.org/doc/faq#assertions)。
英文:
Use channel <- i
instead of chan <- i
.
In you function definition (channel chan int
), channel
is parameter's name, and chan int
is the type. To clarify, your function could be rewrote to the following one:
func findPrimeNumbers(primeNumberChannel chan int) {
for i := 2; ; i++ {
if isPrimeNumber(i){
primeNumberChannel <- i
}
}
}
Additionally, assert
is not available in Go (http://golang.org/doc/faq#assertions).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论