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

时间:2017-06-21 10:40:48

标签: go

我学习函数,为教科书编写了一个简单的脚本,并且有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))

我不明白他对我说的话。

4 个答案:

答案 0 :(得分: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)
}

答案 1 :(得分:0)

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) {
    *x = 0
    return
}

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

答案 3 :(得分:0)

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

在您的情况下,您的函数签名func zero(x *int)表示此函数不返回任何参数,并且在函数体内,您将返回一个值:return x。因此预计1 too many0。正好还有1个。

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

这就是编译器告诉您使用zero(x)作为值

的原因