This reminds me of functional options which I think are used quite widely
for this purpose.

See https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
 and
https://github.com/tmrts/go-patterns/blob/master/idiom/functional-options.md

On Mon, 25 May 2020 at 14:57, Amarjeet Anand <amarjeetanandsi...@gmail.com>
wrote:

> Is it acceptable to make the optional parameter as varargs?
> I wrote code in my package like ...
>
>
> package backoff
>
> func New(options ...Options) *backOff {
>    backOff := defaultBackOff()
>    if len(options) == 0 {
>       return backOff
>    }
>
>    // override default values
>    if len(options) > 1 {
>       panic("only 1 backOffOption allowed")
>    }
>    optn := options[0]
>    backOff.options = &optn
>
>    if optn.Delay_ms > 0 {
>       backOff.delay_ms = optn.Delay_ms
>    }
>    return backOff
> }
>
>
>
> So that in other package, it can be used as *backoff.New()* when option
> is not needed(*which will be the case most of the time*).
>
> Is using varargs for optional parameter is ok? Or am I abusing the
> Variadic Functions feature?
>
>
>
>
>
> --
> 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.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/CANFuhy8nhhbBDWb0%3D7SLvq1aictC9GVG%3D9zpfpJ1gevDdRmd6A%40mail.gmail.com
> <https://groups.google.com/d/msgid/golang-nuts/CANFuhy8nhhbBDWb0%3D7SLvq1aictC9GVG%3D9zpfpJ1gevDdRmd6A%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAFuMYUwW2DCw4Ks9Ho94LKtwLDpf%2B7YMkrMT1hNss5murmcsHw%40mail.gmail.com.

Reply via email to