簡體   English   中英

如何用Go語言在另一個函數中調用一個函數?

[英]How to call a function inside another function in Go language?

我收到一條錯誤消息:“未定義的有效”。 如何在一個函數中調用另一個函數?

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

您可以像這樣pos.isvalid()調用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
}

函數Possmov(pos Position){...}第一行,即var isval isvalid實際上是在嘗試聲明類型為isvalid的變量(未定義,如錯誤所述)

而是在Position類型上聲明您的isvalid()方法。

試試: var isvalid = pos.isvalid()放在適當的位置

您定義的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM