2016-08-03 70 views
0

我收到一條錯誤,說「未定義無效」。我如何在函數中調用另一個函數?如何在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

回答

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 
} 
0

你定義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

1

你在功能Possmov(pos Position){...}var isval isvalid第一行實際上是試圖宣佈

相反您isvalid()方法被聲明在Position類型isvalid類型的變量(其作爲由錯誤描述未定義)。

嘗試:var isvalid = pos.isvalid()在它的位置

相關問題