I actually published a whole article listing the various patterns for 
optional parameters, just a few hours ago: 
https://bojanz.github.io/optional-parameters-go/

Your code looks fine to me, it is a reasonable tradeoff.

On Monday, May 25, 2020 at 4:59:00 AM UTC+2, Amarjeet Anand 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/fdaa0bb6-3359-44ea-a0ac-7127c75ecc6c%40googlegroups.com.

Reply via email to