Yeah, that's my concern with creating an API which accepts a variadic
number of arguments, but strongly encourages you to present at most one.
Relying on documentation  for thistriction is frankly, lame. Given the set
of options, a second function for the uncommon invocation sounds like a
reasonable tradeoff.

On Sat, 8 Jul 2017, 15:34 Sam Whited <s...@samwhited.com> wrote:

> On Fri, Jul 7, 2017 at 10:24 PM, Dave Cheney <d...@cheney.net> wrote:
> > Iff there is only one possible option and it's only used infrequently,
> I'd be inclined to try something like this
> >
> > // Foo returns a new Bar
> > func Foo() Bar
> >
> > // FooWithQuxx returns a new Bar using the underlying Quxx
> > func FooWithQuxx(q Quxx) Bar
>
> I think this is probably what I'll do; I realized earlier that I can't
> articulate a reason that I'm resisting expanding the API footprint
> with a second function, but do have concrete reasons why I don't like
> the other available options.
>
> I think maybe the only reason I shy away from adding a function is
> that I tend to prefer to communicate intent and behavior using the
> type system where possible. This is, incidentally, the same reason I'm
> always a tad resistant to making things variadic (although the
> functional options pattern doesn't bother me, oddly), if only one
> argument will be used since the slice communicates intent to accept
> multiple arguments (which is then contradicted by the documentation).
> Go's type system is very simple (I sometimes think this is Go's
> greatest strength, and other times its greatest weakness), so it can
> make it hard to do this though… sometimes you just need another
> function, I suppose.
>
> Thanks for the feedback!
>
> —Sam
>

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