在Go中,如何检查对象是否响应方法?
例如,在Objective-C中,可以通过执行以下操作来实现:
if ([obj respondsToSelector:@selector(methodName:)]) { // if method exists [obj methodName:42]; // call the method }
一个简单的选择是仅使用您要检查的方法声明一个接口,然后针对您的类型进行类型断言;例如:
i, ok := myInstance.(InterfaceImplementingThatOneMethodIcareAbout) // inline iface delcataration example i, ok = myInstance.(interface{F()})
reflect如果您打算对自己的类型进行任何疯狂的操作,则可能要使用该软件包。http://golang.org/pkg/reflect
reflect
st := reflect.TypeOf(myInstance) m, ok := st.MethodByName("F") if !ok { // method doesn't exist } // do something like invoke m