PS kudos for including a go.mod file in that demo code!

On 12 March 2018 at 19:15, roger peppe <rogpe...@gmail.com> wrote:
> On 12 March 2018 at 17:53, Maverick Woo <maverick....@gmail.com> wrote:
>> 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")?
>
> This is an interesting edge case that you've run across, and I've done
> similar things in the past but I don't buy your motivational example.
> Putting an embedded recursive reference to a value within the value
> itself seems to be asking for trouble to me.
>
> Go emphasises "has-a" relationships over "is-a" relationships, and
> ISTM that you're trying hard for the latter when the former provides a
> straightforward path to doing what you want.
>
> For example: https://play.golang.org/p/b2J05LxzGpT (stripped down to a
> single file so that it works in the Go playground).
>
> Specifically, by changing the Print function to a function from a
> method, we allow it to run on any value that implements the Shape
> interface without being a method on Shape itself. That is, Print *has
> a* Shape, rather than being part of a Shape.
>
> Does that not work for you?
>
>   cheers,
>     rog.

-- 
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.

Reply via email to