Example usage
This topic gives a brief code example of how to use the Optimizely Go SDK to evaluate feature flags, activate A/B tests, or feature tests.
Once you have installed the Go SDK, import the Optimizely library into your code, get your Optimizely project's datafile, and instantiate a client. Then, you can use the client to evaluate feature flags, activate an A/B test, or feature test.
This example shows how to:
-
Evaluate a feature with the key
price_filter
and check a configuration variable on it calledmin_price
. The SDK evaluates your feature test and rollouts to determine whether the feature is enabled for a particular user, and which minimum price they should see if so. -
Run an A/B test called
app_redesign
. This experiment has two variations,control
andtreatment
. It uses theactivate
method to assign the user to a variation, returning its key. As a side effect, the activate function also sends an impression event to Optimizely to record that the current user has been exposed to the experiment. -
Use event tracking to track an event called
purchased
. This conversion event measures the impact of an experiment. Using the track method, the purchase is automatically attributed back to the running A/B and feature tests we've activated, and the SDK sends a network request to Optimizely via the customizable event dispatcher so we can count it on your results page.
import (
optly "github.com/optimizely/go-sdk"
)
attributes := map[string]interface{}{
"DEVICE": "iPhone",
"hey": 2,
}
user := optly.UserContext("userId", attributes)
// Instantiate an Optimizely client
if client, err := optly.Client("SDK_KEY_HERE"); err == nil {
client.IsFeatureEnabled("price_filter", user)
minPrice, _ := client.GetFeatureVariableInteger("price_filter", "min_price", user)
// Activate an A/B test
variation, _ := client.Activate("app_redesign", user)
if variation == "control" {
// Execute code for variation A
} else if variation == "treatment" {
// Execute code for variation B
} else {
// Execute code for users who don't qualify for the experiment
}
client.Track("purchased", user, map[string]interface{}{})
}
Updated almost 3 years ago