Go:检查值的类型是否为函数

huangapple go评论86阅读模式
英文:

Go: check whether type of value is function

问题

你可以使用反射来检查变量的类型是否为func。在Go语言中,可以使用reflect包来进行反射操作。下面是一个示例代码:

package main

import (
	"fmt"
	"reflect"
)

func A() {}

func IsFunc(variable interface{}) bool {
	return reflect.TypeOf(variable).Kind() == reflect.Func
}

func main() {
	variable := A
	isFunc := IsFunc(variable)
	fmt.Println(isFunc) // 输出:true
}

在上面的代码中,IsFunc函数使用reflect.TypeOf函数获取变量的类型,并使用reflect.Kind方法判断类型是否为func。如果是,则返回true,否则返回false。在main函数中,我们将A函数赋值给variable变量,并调用IsFunc函数来检查variable的类型是否为func。最后,将结果打印出来,输出为true

英文:

How I can check that some variable in golang has type func, like this:

func A() {}

func main() {
    variable := A
    isFunc := IsFunc(variable) // true or false
}

答案1

得分: 16

func IsFunc(v interface{}) bool {
return reflect.TypeOf(v).Kind() == reflect.Func
}

英文:
func IsFunc(v interface{}) bool {
   return reflect.TypeOf(v).Kind() == reflect.Func
}

答案2

得分: 3

已经用以下代码解决了这个问题:

func IsFunc(fn interface{}) bool {
    return reflect.TypeOf(fn).Kind() == reflect.Func
}

这段代码的作用是判断一个变量是否为函数类型。

英文:

Already solved with this:

func IsFunc(fn interface{}) bool {
    return reflect.TypeOf(fn).Kind() == reflect.Func
}

huangapple
  • 本文由 发表于 2014年12月20日 00:03:49
  • 转载请务必保留本文链接:https://go.coder-hub.com/27569670.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定