功能旗標可以使用功能篩選有條件地啟用功能。 若要深入瞭解功能篩選,請參閱 使用功能篩選器啟用條件式功能。
本指南中使用的範例是以功能管理 快速入門中引進的 Go Gin Web 應用程式為基礎。 繼續進行之前,請先完成快速入門,以使用 Beta 功能旗標建立 Go Gin Web 應用程式。 完成後,您必須將自訂功能篩選新增至應用程式組態存放區中的 Beta 功能旗標。
在本指南中,您將瞭解如何實作自定義功能篩選,並使用功能篩選器有條件地啟用功能。
Prerequisites
實作自訂功能篩選
您已在必要條件中新增名為 Random 的自定義功能篩選器,其中包含 Beta 功能旗標的 Percentage 參數。 接下來,您將會實作功能篩選,以根據 Percentage 參數所定義的機率來啟用 Beta 功能旗標。
以下列程式碼建立
random_filter.go檔案: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 }您新增了從
featuremanagement庫中實作FeatureFilter介面的RandomFilter結構。 介面FeatureFilter有兩種方法:-
Name()會傳回篩選名稱 Random,其符合您在 Azure 應用程式組態中 Beta 功能旗標中設定的篩選名稱。 -
Evaluate()會在評估功能旗標時呼叫。 功能篩選器會傳回true,使功能旗標生效。
-
更新您的
main.go檔案以在建立功能管理員時註冊RandomFilter// ...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... }
功能篩選作用中
重新啟動應用程式並重新整理瀏覽器數次。 若未手動切換功能旗標, Beta 功能表會根據您設定的百分比隨機顯示。
Gin 網頁應用程式螢幕快照,Beta 功能表已隱藏。
Next steps
若要深入瞭解內建功能篩選器,請繼續進行下列檔。
若需了解 Go 功能管理程式庫的完整功能概覽,請繼續參閱下列文件。