Add Inspection pattern for ergonomic value retrieval #2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces a new Inspection pattern that separates context value retrieval from display logic, providing a more ergonomic and flexible API for working with feature flag values.
Key Changes
New
Inspection[V]struct: Captures the key, value, and whether it was set in a single call toInspect(ctx). All helper methods (Get,TryGet,GetOrDefault,MustGet,IsSet,IsNotSet) are now available on the inspection result without needing to pass context again.New
BoolInspectionstruct: A specialized wrapper for boolean feature flags withEnabled(),Disabled(), andExplicitlyDisabled()convenience methods.fmt.Stringerandfmt.GoStringersupport: BothKeyandInspectiontypes now implement these interfaces with package-qualified output for better debugging.Breaking change: Removed
DebugValue/DebugStringmethods (replaced byInspection.String()).Example Usage
File Changes
feature.goInspect()method toKey[V],InspectBool()toBoolKey,fmt.GoStringerinterface, refactored existing methods to use Inspection internallyinspection.goInspection[V]andBoolInspectionstructs with all helper methodsfeature_test.goDebugValuetestsinspection_test.goTest Plan
InspectionandBoolInspectiontypesgolangci-lintpasses with no issuesgo vetpasses🤖 Generated with Claude Code