Pointer vs value receivers and named returns have so many gotchas that it is not even funny. Lack of magic my ass.
1) Use the pointer receiver unless you have a really good reason to do otherwise.
2) Never, ever use named returns. Code can (and should) always be written to not use them.