In Go, come si controlla se un oggetto risponde a un metodo?Come verificare se un oggetto ha un metodo particolare?
Per esempio, in Objective-C questo può essere realizzato facendo:
if ([obj respondsToSelector:@selector(methodName:)]) { // if method exists
[obj methodName:42]; // call the method
}
Mi piacerebbe davvero incoraggiare la gente a utilizzare il tipo di affermazione, piuttosto che riflettere (o, meglio se non avete altro bisogno per nominare iface a un metodo, è suggerita un'interfaccia anonima specificata in linea come uraimo). Più veloce, più breve, nessuna importazione, nessuna stringa come nome del metodo. – twotwotwo
@twotwotwo concordato. Penso che riflettere abbia davvero senso se si sta andando a fare un sacco di controlli che portano a decisioni runtime su come comportarsi. Se vuoi solo vedere se puoi o meno invocare un metodo, l'opzione iface è molto più semplice e se la stai solo usando in un posto la dichiarazione anonima inline è anche meglio. – evanmcdonnal