我正在尝试编写一个函数,它接受任意类型的某种类型的内容或可以生成并返回任意类型的函数。要做到这一点,我必须能够通常测试一个参数是否是一个函数,而不用测试它是否是返回类型X的函数。我该怎么做?可能看起来像下面这样:如何在接口变量上做类型断言来测试它是否是函数?
func Blah(arbitrary interface{}) {
var value interface{}
if function, ok := arbitrary.(func interface{}); ok {
value = function()
} else {
value = arbitrary
}
...
}
这样做是失败的。也许类型断言不是在这里使用的东西。或者,我可能只是不知道语法。将不胜感激任何建议。目前我所知道的只是把它分成两个函数,一个接受要存储的数据,另一个预计会得到一个函数,但在两种情况下,这似乎都是过度的,目标是简单地获得一个值并将其传递给函数的其余部分。
对此的任何想法?
类型的断言似乎并不婆可行(静态与运行时类型检查:http://stackoverflow.com/a/21496374/6309)。这给你留下了反思。 – VonC 2014-10-06 18:30:59