2017-06-21 80 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)作爲一種價值