With 1.18 generics, I'm curious if anyone has a good solution using 
generics to solve the optional argument that can be used in multiple method 
problem.

So say I have two methods, .A() and .B().  Both accept optional arguments 
where some optional arguments might be shared.

Here is a very loose (do not take any of this as the solution, just trying 
to show what I'm kinda trying to achieve). 

type AOptions struct{
  Shared Opt string
  NotSharedOpt bool
}

type BOptions struct{
  Shared Opt string
  NotSharedOpt int
}

func WithShared(shared string) CallOption {
  ...
}

func WithANotShared(b bool) CallOption {
  ...
}

func (c Client) A(options ...CallOption) {
  opts := AOptions{}
  for _, o := range options {
    o(&opts)
  }
  ... 
}
func (c Client B(options ...CalOption) {
  ...
}

We want to be able to use WithShared() with both A() and B(), but only  
WithANotShared with the A() method.  

I've had different solutions to this problem that would give runtime 
errors, but I'm curious with generics if there is one for compile time that 
anyone has come up with.

Cheers.

-- 
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/31042a26-83b0-40af-b5ae-811a2e893033n%40googlegroups.com.

Reply via email to