-1

golang 中是否有等价物来检查 package/go 文件中是否存在一个函数,就像在 python 中完成的那样。

mymethod in dir(package)
4

2 回答 2

1

这篇文章看来,这不是直接可能的。

您始终可以创建自己的包来搜索包文件并检查该方法是否存在,如上述帖子的第一个答案中所述。

于 2018-07-15T18:17:07.240 回答
1

根据您的评论,听起来您可以简单地使用包含可用功能的地图。这是一个完整的例子:

package main

import (
    "flag"
    "fmt"
    "os"
)

func main() {
    var option string
    var data string

    flag.StringVar(&option, "option", "default", "The option to choose from")
    flag.StringVar(&data, "data", "", "The data to use")

    flag.Parse()

    options := map[string]func(string) string{
        "foo": func(data string) string {
            fmt.Println("do something with data using option foo")
            return data
        },
        "bar": func(data string) string {
            fmt.Println("do something with data using option bar")
            return data
        },
        "default": func(data string) string {
            fmt.Println("do something with data using default option")
            return data
        },
    }

    method, found := options[option]
    if !found {
        fmt.Println("option is not available")
        os.Exit(1)
    }

    result := method(data)
    fmt.Println(result)
}

输出

$ go run main.go -data hello -option foo
do something with data using option foo
hello

$ go run main.go -data hello -option whatever
option is not available

$ go run main.go -data hello
do something with data using default option
hello
于 2018-07-16T18:26:23.647 回答