我具有接受接口的功能{}
func MyFunk(itf interface{}) {
}
我想知道是否通过的itf是一个结构,这可能吗?我尝试了反射的几种组合,得出的结局是ptr
(指针)。
答案 0 :(得分:5)
使用以下命令检测参数是否为结构:
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
}
}
答案 1 :(得分:4)
使用reflect
包,您可以检查结构类型和结构指针:
sectionCounter = Math.max(1, sectionCounter - 1);
答案 2 :(得分:1)
可能Type assertions可以为您
func MyFunk(itf interface{}) {
s, ok := itf.(MyStruct)
fmt.Println(s, ok)
}