C
Size: a a a
АТ
АТ
C
func Foo(opts ...Option) {}Есть набор опций:
func Bar(opts ...Option) {}
func A() Option{}Проблема в том что есть параметр X, который Foo не поддерживает.
func B() Option{}
func C() Option{}
func X() Option{}
func Foo(X()) <- ошибка в рантаймеРешить проблему можно сделав для каждого метода свой набор параметров FooOption, BarOption
func Bar(X()) <- все ок
func Foo(opts ...FooOption) {}Но это приведет к куче бойлерплейта и мешанины в названиях параметров, т.к. большинство параметров для обеих функций одинаковые:
func Bar(opts ...BarOption) {}
func FooA() FooOption{}
func FooB() FooOption{}
func FooC() FooOption{}
func BarA() BarOption{}
func BarB() BarOption{}
func BarC() BarOption{}
func BarX() BarOption{}
func Foo(BarX()) <- ошибка в compile timeWhat's your choice?
func Bar(BarX()) <- все ок
DP
x
type myFloat64 float64
func (v *myFloat64) MarshalEasyJSON(w *jwriter.Writer) {
w.RawString(strconv.FormatFloat(float64(v), 'f', -1, 64))
}
а
C
DP
DP