Hi, I am exploring a pattern to achieve a desirable aspect of vtable in Go. For now please put the vtable consideration aside, and see an example I have put together for this post:
https://play.golang.org/p/ctkwGuYGqiy In the example, there is a "typo" in the spelling of a method name ("Buuuug" instead of "Bug"), and that typo caused the generate code to exhibit an infinite recursion in method lookup. This infinite recursion looks reasonable to me and I consider the Go compiler & runtime to be doing the right thing here. My question is: is there a way to *statically* catch this typo, in the same spirit as the ineffective attempt at the end of the playground example (a "var _ type assertion")? The situation here essentially involves a type that does not provide a method to override a declared method in an embedded interface value. I recall method promotion for interface values is dynamic, and so I am not hopeful there would be a static solution for this "typo" problem. However, I thought at least I can ask for advice here. :> Thanks! Maverick P.S. This thread is really not intended to discuss vtable in Go and I am not advocating that this "vtable pattern" in the playground example is the right approach to write Go in every situation where dynamic dispatch is needed. In fact, in my experience, this is far from the truth and the typical "accept an interface value as an argument" works in most cases. However, I would also hope we don't stigmatize a concept just because it is not the best approach in every case. To see one possibly-compelling use case of this pattern in a concrete toy example, I have written more in https://www.reddit.com/r/golang/comments/83qboe/the_vtable_pattern_in_go/ and the associated GitHub repo. I hope the README.md in the repo would be sufficient to explain a niche case when this pattern may be useful. Please feel free to leave you comments there too! Thanks! -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.