如何对 interface{} 变量进行类型断言以测试它是否为函数?

我正在尝试编写一个函数,它接受某种类型的任意类型的内容,或者一个可以生成和返回任意类型的函数。要做到这一点,我必须能够通常测试一个参数是否是一个函数,而不测试它是否是一个返回类型 X 的函数。我该怎么做?可能如下所示:


func Blah(arbitrary interface{}) {

    var value interface{}


    if function, ok := arbitrary.(func interface{}); ok {

        value = function()

    } else {

        value = arbitrary

    }

    ...

}

这将失败。也许类型断言不是在这里使用的东西。或者也许我只是不知道语法。将不胜感激任何建议。我目前唯一知道要做的就是将其分为两个函数,一个接受要按原样存储的数据,另一个期望获得一个函数,但这在两种情况下的目标只是获得一个值并将其传递给函数的其余部分。


对此有何想法?


蝴蝶刀刀
浏览 201回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go