How open-feature/go-sdk works
The OpenFeature Go SDK exposes a vendor-neutral feature-flag API: applications configure a provider and evaluate typed flags through a client, receiving values and resolution details. Evaluation can use global, client, and transaction context; hooks add lifecycle behavior, while provider events support state changes and graceful shutdown. The repository also supplies multi-provider strategies, in-memory/no-op providers, isolated APIs, logging and telemetry utilities. The README documents several capability relationships; some internal wiring is not shown in the sampled excerpts, so those links are omitted or marked unverified.
Main entry points: client.go Client · multiprovider.go Multi-provider · openfeature.go API registry · hooks.go Hook lifecycle
Components 20
SDK API
- API registry
openfeature/openfeature.go - Client
openfeature/client.go - Isolated API
openfeature/isolated/isolated.go
Evaluation
- Evaluation context
openfeature/evaluation_context.go - Resolution details
openfeature/resolution_error.go - Hook lifecycle
openfeature/hooks.go - Provider events
openfeature/event_executor.go
Providers
- Provider contract
openfeature/provider.go - Multi-provider
openfeature/multi/multiprovider.go - Comparison strategy
openfeature/multi/comparison_strategy.go - Strategy helpers
openfeature/multi/strategies.go - First-match strategy
openfeature/multi/first_match_strategy.go - Hook isolation
openfeature/multi/isolation.go - Memory provider
openfeature/memprovider/in_memory_provider.go - No-op provider
openfeature/noop_provider.go
Extensions
- Logging hook
openfeature/hooks/logging_hook.go - Telemetry events
openfeature/telemetry/telemetry.go - Test provider
openfeature/testing/testprovider.go
Other components
- Application
- Flag service
Connections 21
- Application → API registry: configures
README.md - Application → Client: creates
README.md - Client → Provider contract: evaluates through
README.md - Provider contract → Flag service: integrates with
README.md - Client → Evaluation context: uses context
README.md - Evaluation context → Client: propagates transaction context
README.md - Client → Hook lifecycle: runs lifecycle
README.md - Client → Resolution details: returns details
- Hook lifecycle → Logging hook: invokes hook
openfeature/hooks/logging_hook.go - Hook lifecycle → Telemetry events: supports evaluation events
openfeature/telemetry/telemetry.go - API registry → Provider events: exposes eventing
README.md - API registry → Provider contract: registers providers
README.md - Application → Multi-provider: can configure
README.md - Multi-provider → Comparison strategy: selects strategy
- Multi-provider → First-match strategy: selects strategy
- Multi-provider → Strategy helpers: uses helpers
- Multi-provider → Hook isolation: isolates hooks
- Application → Memory provider: can register
- Application → No-op provider: can register
README.md - Application → Isolated API: creates independent API
openfeature/isolated/isolated.go - Test provider → Memory provider: delegates evaluation
openfeature/testing/testprovider.go