Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Funktionsflaggor kan använda funktionsfilter för att aktivera funktioner villkorligt. Mer information om funktionsfilter finns i Aktivera villkorsstyrda funktioner med funktionsfilter.
Exemplet som används i den här guiden baseras på Go Gin-webbappen som introducerades i snabbstarten för funktionshantering. Innan du fortsätter kan du slutföra snabbstarten för att skapa ett Go Gin-webbprogram med en betafunktionsflagga . När du är klar måste du lägga till ett anpassat funktionsfilter i betafunktionsflaggan i appkonfigurationsarkivet.
I den här guiden får du lära dig hur du implementerar ett anpassat funktionsfilter och använder funktionsfiltret för att aktivera funktioner villkorligt.
Prerequisites
- Skapa ett Go Gin-webbprogram med en funktionsflagga.
- Lägga till ett anpassat funktionsfilter i funktionsflaggan
Implementera ett anpassat funktionsfilter
Du har lagt till ett anpassat funktionsfilter med namnet Random med en procentparameter för din Beta-funktionsflagga i förutsättningarna. Därefter implementerar du funktionsfiltret för att aktivera betafunktionsflaggan baserat på den chans som definieras av parametern Procent .
Skapa en
random_filter.gofil med följande kod:package main import ( "fmt" "math/rand" "time" "github.com/microsoft/Featuremanagement-Go/featuremanagement" ) type RandomFilter struct{} func (f *RandomFilter) Name() string { return "Random" } func (f *RandomFilter) Evaluate(evalCtx featuremanagement.FeatureFilterEvaluationContext, appCtx any) (bool, error) { percentage, ok := evalCtx.Parameters["Percentage"].(float64) if !ok { return false, fmt.Errorf("invalid parameter type for Percentage: expected float64, got %T", evalCtx.Parameters["Percentage"]) } rand.Seed(time.Now().UnixNano()) randomValue := rand.Intn(100) return randomValue <= int(percentage), nil }Du har lagt till en
RandomFilterstruct som implementerarFeatureFiltergränssnittet frånfeaturemanagementbiblioteket. GränssnittetFeatureFilterhar två metoder:-
Name()returnerar filternamnet Slumpmässigt, vilket matchar filternamnet som du angav i betafunktionsflaggan i Azure App Configuration. -
Evaluate()anropas när en funktionsflagga utvärderas. Ett funktionsfilter aktiverar en funktionsflagga genom atttruereturnera .
-
Uppdatera din
main.go-fil för att registreraRandomFilternär du skapar funktionhanterare:// ...existing code... func main() { ctx := context.Background() // Load Azure App Configuration appConfig, err := loadAzureAppConfiguration(ctx) if err != nil { log.Fatalf("Error loading Azure App Configuration: %v", err) } // Create feature flag provider featureFlagProvider, err := azappconfig.NewFeatureFlagProvider(appConfig) if err != nil { log.Fatalf("Error creating feature flag provider: %v", err) } // Register custom filters options := &featuremanagement.Options{ Filters: []featuremanagement.FeatureFilter{ &RandomFilter{}, }, } // Create feature manager with custom filters featureManager, err := featuremanagement.NewFeatureManager(featureFlagProvider, options) if err != nil { log.Fatalf("Error creating feature manager: %v", err) } // ...existing code... }
Funktionsfilter i praktiken
Starta om programmet och uppdatera webbläsaren några gånger. Utan att manuellt växla funktionsflaggan visas Beta-menyn slumpmässigt baserat på den procentandel som du har angett.
Next steps
Om du vill veta mer om de inbyggda funktionsfiltren fortsätter du till följande dokument.
För en fullständig funktionsöversikt av Go-biblioteket för funktionshantering, fortsätt till följande dokument.