英文:
What's wrong with this simple script?
问题
我正在翻译以下内容:
我正在学习函数,为教科书编写了一个简单的脚本,但出现了两个错误。
package main
import "fmt"
func zero(x int) {
x = 0
return x
}
func main() {
x := 5
x = zero(x)
fmt.Println(x)
}
> 返回值过多 (返回值为字符串 x)
为什么是"过多"?只有一个返回值啊!
> zero(x) 作为值使用 (字符串 x = zero(x))
我不明白他对我说了什么。
英文:
I study functions, wrote a simple script for the textbook, and there were 2 errors.
package main
import "fmt"
func zero(x int) {
x = 0
return x
}
func main() {
x := 5
x = zero(x)
fmt.Println(x)
}
> too many arguments to return (string return x)
How is "too many"? It's only one!
> zero(x) used as value (string x = zero(x))
I don't understand what he says to me.
答案1
得分: 1
int in func
package main
import "fmt"
func zero(x int) int {
x = 0
return x
}
func main() {
x := 5
x = zero(x)
fmt.Println(x)
}
在这段代码中,定义了一个名为"zero"的函数,它接受一个整数参数x,并将x的值设为0,然后返回x的值。在"main"函数中,定义了一个变量x并赋值为5,然后调用"zero"函数,并将返回值赋给x,最后打印输出x的值。
英文:
int in func
package main
import "fmt"
func zero(x int) int {
x = 0
return x
}
func main() {
x := 5
x = zero(x)
fmt.Println(x)
}
答案2
得分: 0
package main
import "fmt"
func zero(x int) int {
x = 0
return x
}
func main() {
x := 5
x = zero(x)
fmt.Println(x)
}
package main
import "fmt"
func zero(x int) int {
x = 0
return x
}
func main() {
x := 5
x = zero(x)
fmt.Println(x)
}
这是一个简单的Go语言程序。它定义了一个名为zero
的函数,该函数接受一个整数参数x
,将其赋值为0,并返回该值。在main
函数中,我们声明了一个变量x
并初始化为5,然后调用zero
函数将x
赋值为0,并打印输出结果。运行该程序将输出0。
英文:
package main
import "fmt"
func zero(x int) int {
x = 0
return x
}
func main() {
x := 5
x = zero(x)
fmt.Println(x)
}
答案3
得分: 0
我相信这更接近原始想法...
package main
import "fmt"
func zero(x *int) {
*x = 0
return
}
func main() {
x := 5
zero(&x)
fmt.Println(x)
}
英文:
I believe this is closer to the original idea...
package main
import "fmt"
func zero(x *int) {
*x = 0
return
}
func main() {
x := 5
zero(&x)
fmt.Println(x)
}
答案4
得分: 0
"too many" 意味着你的函数返回的值比函数签名指定的多。
在你的情况下,你的函数签名 func zero(x *int)
表示这个函数不返回任何参数,但是在函数体内,你返回了一个值:return x
。所以 1
比期望的 0
多了 1
个。
然后 "zero(x) used as value" 是告诉你正在调用一个不返回任何值的函数,并且你试图将不存在的返回值赋给一个变量:x = zero(x)
。
这就是编译器告诉你关于使用 zero(x)
作为值的原因。
英文:
too many
means that your function is returning more values that the function signature specifies.
In your case, your function signature func zero(x *int)
, says that this function doesn't returns ANY params, and inside the function body, you're returning ONE value: return x
. So 1
is too many
for 0
expected. Exactly 1 more.
Then zero(x) used as value
is telling you that you're calling a function that doesn't return ANY value, and you're trying to assign the non-existent return value to a variable: x = zero(x)
.
That's why the compiler tells you about using zero(x)
as a value
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论