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.