Using the GO module
Installation
go get github.com/thomaspoignant/go-feature-flag
Create a feature flag configuration
Create a new YAML
file containing your first flag configuration.
# 20% of the users will use the variation "my-new-feature"
test-flag:
variations:
my-new-feature: true
my-old-feature: false
defaultRule:
percentage:
my-new-feature: 20
my-old-feature: 80
This flag split the usage of this flag, 20% will use the variation my-new-feature
and 80% the variation my-old-feature
.
SDK Initialisation
First, you need to initialize the ffclient
with the location of your backend file.
err := ffclient.Init(ffclient.Config{
PollingInterval: 3 * time.Second,
Retriever: &fileretriever.Retriever{
Path: "flag-config.goff.yaml",
},
})
defer ffclient.Close()
This example will load a file from your local computer and will refresh the flags every 3 seconds (if you omit the PollingInterval, the default value is 60 seconds).
This is a basic configuration to test locally, in production it is better to use a remote place to store your feature flag configuration file.
Look at the list of available options in the Store your feature flag file page.
Evaluate your flags
Now you can evaluate your flags anywhere in your code.
user := ffcontext.NewEvaluationContext("user-unique-key")
hasFlag, _ := ffclient.BoolVariation("test-flag", user, false)
if hasFlag {
// flag "test-flag" is true for the user
} else {
// flag "test-flag" is false for the user
}
You can find more examples in the examples/ directory.