2016-08-03 30 views
0

Ich erhalte eine Fehlermeldung "undefined isvalid". Wie rufe ich eine andere Funktion in einer Funktion auf?Wie ruft man eine Funktion in einer anderen Funktion in der Sprache Go auf?

package main 

import "fmt" 

type Position struct { 
    row int 
    col int 
} 

func (posstn Position) isvalid() bool { 
    if posstn.row > 8 || posstn.row < 0 || posstn.col > 8 || posstn.col < 0 { 
     return false 
    } 
    return true 
} 

func Possmov(pos Position) { 
    var isval isvalid 
    if isval == true { 
     fmt.Println("Something") 
    } 
} 

func main() { 
    Possmov(Position{1, 7}) 
} 
+3

Vielleicht https://tour.golang.org einmal mehr konnte man die Tour von Go nehmen? – Volker

Antwort

3

Sie isvalid() wie diese pos.isvalid() seht diesen Arbeitsbeispielcode nennen:

package main 

import "fmt" 

type Position struct { 
    row int 
    col int 
} 

func (posstn Position) isvalid() bool { 
    if posstn.row > 8 || posstn.row < 0 || posstn.col > 8 || posstn.col < 0 { 
     return false 
    } 
    return true 
} 

func Possmov(pos Position) { 
    isval := pos.isvalid() 
    if isval == true { 
     fmt.Println("Something") 
    } 
} 
func main() { 
    Possmov(Position{1, 7}) //Something 
} 
0

Ihr var isval isvalid definiert, während isvalid keine bekannte Art in Go ist, statt:

func Possmov(pos Position) { 

    var isval bool // default is false 

    if isval == true { 

     fmt.Println("Something") 

    } 

} 

https://play.golang.org/p/Ml2PgEOZfV

1

Ihre erste Linie in Funktion Possmov(pos Position){...} d.h. var isval isvalid versucht, tatsächlich eine Variable vom Typ zu deklarieren isvalid (die durch den Fehler, wie beschrieben undefiniert ist)

Anstatt Ihre isvalid() Methode auf dem Position Typ deklariert ist.

Versuchen: var isvalid = pos.isvalid() in seinen Platz