Slide 98
Slide 98 text
func BooleanValue(ctx context.Context, flag FeatureFlag, opts ...Option[bool]) bool {
var (
err error
opt = options[bool]{
evaluationContext: ctxkey.GetOpenFeatureEvaluationContext(ctx),
defaultValue: false,
}
)
span, ctx := trace.StartSpan(
ctx,
fmt.Sprintf("copenfeature.BooleanValue.%s", flag),
)
defer func() {
span.Finish(err)
}()
for _, o := range opts {
o(&opt)
}
eflag, err := client.ofc.BooleanValue(
ctx,
string(flag),
opt.defaultValue,
opt.evaluationContext,
opt.ofcOpts...,
)
if err != nil {
errorLogger(ctx, "failed to get boolean value", flag, err)
return opt.defaultValue
}
return eflag
}
少しラップ
• functional option patternで
入
れ
られるように少しラップしている
• span も仕込んでいる