2012-09-24 8 views
55

¿Cuál es la forma correcta de llamar funciones cuando se evalúan sus valores en sentencias condicionales?"usado como valor" en la llamada a la función

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 
} 

esto devuelve error:

./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 

cómo habría que escribir esto en Ir?

Gracias

+2

Gracias por la pregunta, acabo de hacer el mismo

Respuesta

87

Ha olvidado declarar el valor de retorno. Debería ser:

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

Gracias ... no creo, el valor de retorno es necesario kkkkk – KingRider

-5

Lo mejor de todo es que puedes escribirlo de todos modos. Go no es 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

Puede explicar su respuesta un poco más? No estoy seguro de entender cómo esto demuestra algo que es "más parecido a un truco" o "menos parecido a Java". Esta declaración no pretende contradecir esa afirmación, simplemente no entiendo su punto del ejemplo solo. –

+0

Un diff descubrió que esta respuesta significaba ''int' como tipo de retorno para la función. – mixdev

+1

lo único útil en la respuesta fue devolver 'int' en la función. – pankajdoharey

Cuestiones relacionadas