Example usage of the Go SDK
A brief code example of how to use the Optimizely Feature Experimentation Go SDK to evaluate feature flags, activate A/B tests, or feature tests.
After installing the Go SDK, import the Optimizely library, get your project's datafile, and create a client. Use the client to evaluate flag rules like A/B tests and flag deliveries.
This example walks through the following three key steps:
-
Evaluate a flag with the key
product_sortusing theDecidemethod. This also sends a decision event to Optimizely to record that the user was exposed to the experiment. -
Run code based on the flag result. The SDK evaluates your flag rules and determines which variation the user is in. You can either
- Check the flag's enabled state and read a configuration variable (
sort_method) to determine which experience the user gets. - Check the flag variation directly and run the corresponding control or treatment code.
- Check the flag's enabled state and read a configuration variable (
-
Track a conversion event called
purchasedto measure the experiment's impact. TheTrackEventmethod ties the purchase back to the A/B test and sends it to Optimizely so it displays on your Experiment Results page.
import optly "github.com/optimizely/go-sdk" // for v2: "github.com/optimizely/go-sdk/v2"
optimizely_client, err := optly.Client("SDK_KEY_HERE")
if err != nil {
// handle the err
}
// create a user and decide a flag rule (such as an A/B test) for them
user := optimizely_client.CreateUserContext("user123", map[string]interface{}{"logged_in": true})
decision := user.Decide("product_sort", []decide.OptimizelyDecideOptions{})
var variationKey string
if variationKey = decision.VariationKey; variationKey == "" {
fmt.Printf("[decide] error: %v", decision.Reasons)
return
}
// execute code based on flag enabled state
enabled := decision.Enabled
if enabled {
// get flag variable values
var value1 string
decision.Variables.GetValue("sort_method", &value1)
// or:
value2 := decision.Variables.ToMap()["sort_method"].(string)
}
// or execute code based on flag variation:
if variationKey == "control" {
// Execute code for control variation
} else if variationKey == "treatment" {
// Execute code for treatment variation
}
// Track a user event
user.TrackEvent("purchased", nil)For a more detailed and runnable code example, see the Quickstart.
Updated 3 days ago
