如何在Go语言中调用另一个函数内的函数?

问题描述:

我收到一条错误,说“未定义无效”。我如何在函数中调用另一个函数?如何在Go语言中调用另一个函数内的函数?

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

也许你可能需要转到https://tour.golang.org一次的巡回赛? – Volker

你可以叫isvalid()这样pos.isvalid()看到这方面的工作示例代码:

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 
} 

你定义var isval isvalid,而isvalid不是围棋的已知类型,而不是:

func Possmov(pos Position) { 

    var isval bool // default is false 

    if isval == true { 

     fmt.Println("Something") 

    } 

} 

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

你在功能Possmov(pos Position){...}var isval isvalid第一行实际上是试图宣布

相反您isvalid()方法被声明在Position类型isvalid类型的变量(其作为由错误描述未定义)。

尝试:var isvalid = pos.isvalid()在它的位置