2017-06-21 79 views
-7

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

+2

你忘了指定的返回类型。 –

+5

1)它不是一个脚本。 2)你的错误告诉你到底什么是错的。你读过他们了吗? – Flimzy

+3

被嗤之以鼻不会说服人们来帮助你。也就是说,一个简单的谷歌搜索“去功能”应该给你提示你需要。 –

回答

1

在FUNC INT

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 many0预计。恰好还有1个。

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

这就是为什么编译器会告诉你如何使用zero(x)作为一种价值