gpt4 book ai didi

去如何检查一个函数是否存在

转载 作者:IT王子 更新时间:2023-10-29 01:20:33 25 4
gpt4 key购买 nike

有什么方法可以检查 Go 中是否存在函数?

在 PHP 中我可能会做类似的事情

if(function_exists('someFunction')) {
//...
}

但我还不知道如何在 Go 中做到这一点

我们将不胜感激。

最佳答案

关于您尝试做的事情的更多背景信息会有所帮助。正如您在自己的评论中指出的那样,如果您尝试调用一个函数,Go 会在编译时检查该函数是否存在,大多数情况下都是如此。

我想到的一个异常(exception)是当您使用 interface{} 并且您想要在调用方法之前检查它是否存在。为此,您可以使用类型检查。

例子:

package main

import "fmt"

// a simple Greeter struct
// with a Hello() method defined
type Greeter struct {
Name string
}
func (m *Greeter) Hello() string {
return "hello " + m.Name
}

var x interface{}

func main() {
x = Greeter {Name:"Paolo"} // x is a interface{}
g,ok := x.(Greeter) // we have to check that x is a Greeter...
if ok {
fmt.Println(g.Hello()) // ...before being able to call Hello()
}
}

我能想到的另一种情况是,您正在为 Go 创建自己的工具,该工具需要在编译前解析 go 文件。如果是这样,Go 在 parser package 的 for 中提供帮助

关于去如何检查一个函数是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20799028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com