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

时间:2016-08-03 07:10:13

标签: function go struct boolean

我收到错误消息" undefined 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) {
    var isval isvalid
    if isval == true {
        fmt.Println("Something")
    }
}

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

3 个答案:

答案 0 :(得分:3)

您可以像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
}

答案 1 :(得分:1)

函数Possmov(pos Position){...}中的第一行,即var isval isvalid实际上是在尝试声明isvalid类型的变量(错误描述未定义)

而是在isvalid()类型上声明了Position方法。

尝试:var isvalid = pos.isvalid()在其中

答案 2 :(得分:0)

您定义的var isval isvalid,而isvalid不是Go中的已知类型,而是:

func Possmov(pos Position) {

    var isval bool  // default is false

    if isval == true {

        fmt.Println("Something")

    }

}

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