这个简单的脚本有什么问题?

问题描述 投票:-6回答:4

我学习函数,为教科书编写了一个简单的脚本,并且有2个错误。

package main
import "fmt"

func zero(x int) {
    x = 0
    return x
}
func main() {
    x := 5
    x = zero(x)
    fmt.Println(x)
}

返回的参数太多(字符串返回x)

“太多”怎么样?这只是一个!

零(x)用作值(字符串x =零(x))

我不明白他对我说的是什么。

go
4个回答
1
投票

int在func中

package main
import "fmt"

func zero(x int) int {
    x = 0
    return x
}
func main() {
    x := 5
    x = zero(x)
    fmt.Println(x)
}

0
投票
package main

import "fmt"

func zero(x int) int {
    x = 0
    return x
}

func main() {
    x := 5
    x = zero(x)
    fmt.Println(x)
} 

0
投票

我相信这更接近最初的想法......

package main

import "fmt"

func zero(x *int) {
    *x = 0
    return
}

func main() {
    x := 5
    zero(&x)
    fmt.Println(x)
}

0
投票

too many表示您的函数返回的函数签名指定的值更多。

在你的情况下,你的函数签名func zero(x *int),说这个函数不返回任何参数,并且在函数体内,你返回一个值:return x。所以1too many预期的0。正好还有1个。

然后zero(x) used as value告诉你,你正在调用一个不返回任何值的函数,并且你试图将不存在的返回值赋给变量:x = zero(x)

这就是编译器告诉你使用zero(x)作为值的原因

© www.soinside.com 2019 - 2024. All rights reserved.