我具有接受接口(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
    }
}

09-26 00:13