2012-09-24 41 views
55

在條件語句中評估它們的值時調用函數的正確方法是什麼?「在函數調用中用作值」

package main 
import "fmt" 
func main(){ 
     if sumThis(1,2) > sumThis(3,4){ 
       fmt.Println("test") 
     } else { 
       fmt.Println("derp") 
     } 
} 
func sumThis(a, b int){ 
     return a+b 
} 

這將返回錯誤:

./test4.go:4: sumThis(1, 2) used as value 
./test4.go:4: sumThis(3, 4) used as value 
./test4.go:11: too many arguments to return 

你將如何在Go寫的嗎?

謝謝

+2

謝謝你的問題,我只是做了同樣的

回答

87

您忘記了聲明返回值。它應該是:

func sumThis(a, b int) int{ 
// ... 
+0

謝謝...我不相信,需要返回值KKKKK – KingRider

-5

它的美妙之處在於你可以隨心所欲地書寫它。 圍棋是不是Java

package main 

func main() { 
    r := "derp" 
    if sumThis(1, 2) > sumThis(3, 4) { 
     r = "test" 
    } 
    println(r) 
} 
func sumThis(a, b int) int { 
    return a + b 
} 
+12

你能解釋一下你的答案多一點?我不確定我是否明白這是如何展示「更像go-like」或「更少java」的東西。這個陳述並不意味着與這個​​斷言相抵觸,我只是不能從這個例子中理解你的觀點。 –

+0

一個差異發現這個答案意味着添加''int'作爲函數的返回類型。 – mixdev

+1

答案中唯一有用的東西是在函數中返回'int'。 – pankajdoharey