我具有接受接口(interface)的功能{}
func MyFunk(itf interface{}) {
}
我想知道传递给它的itf是否是一个结构,这可能吗?我已经尝试了反射的几种组合,并且可以得到的结束是
ptr
(指针)。 最佳答案
使用以下命令检测参数是否为结构:
func MyFunk(itf interface{}) {
v := reflect.ValueOf(itf)
if v.Kind() == reflect.Struct {
// it's a struct
}
}
如果您还想检查指向结构的指针,请使用以下代码:
func MyFunk(itf interface{}) {
v := reflect.Indirect(reflect.ValueOf(itf))
if v.Kind() == reflect.Struct {
// it's a struct
}
}