Original post

Hey guys, I am pretty sure this must have been discussed here, but it’s difficult for me to properly formulate a headline resp. searching for an existing entry. Hope for your forgiveness.

So I got a function type and it defines some factory function.
To have some adapter pattern I want it to return an interface type.

So the idea is:
For each adapter implementation I just have some factory function that returns a type
implementing the required Adapter interface.

Unfortunately using the concrete factory function only work if I wrap them in an anonymous function.

On the one hand this works, ok.
On the other hand, I do not understand why it works or I don’t understand why my naive attempt to directly use the factory functions does not work.

I put an example here, showing the working and not working version next to each other.
https://play.golang.org/p/QMDzs7bKHNQ

Is this about strictness to enforce well readable code or is this details missing in compiler implementation? To me the code I have to produce unnecessarily verbose.

Bonus: plus points given for the one who tells a more proper topic name.