如何在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})
}
答
你可以叫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")
}
}
答
你在功能Possmov(pos Position){...}
即var isval isvalid
第一行实际上是试图宣布
相反您isvalid()
方法被声明在Position
类型isvalid
类型的变量(其作为由错误描述未定义)。
尝试:var isvalid = pos.isvalid()
在它的位置
也许你可能需要转到https://tour.golang.org一次的巡回赛? – Volker