The availability of features may depend on your plan type. Contact your Customer Success Manager if you have any questions.

Dev guideRecipesAPI Reference
Dev guideAPI ReferenceUser GuideLegal TermsGitHubDev CommunityOptimizely AcademySubmit a ticketLog In
Dev guide

Create a user context using the Go SDK

Describes the create user context method in the Go SDK, which creates a user context for flag decisions and events in Optimizely Feature Experimentation.

Create a user for which you can make flag decisions and track events. The user context is returned as a runtime object that is not otherwise persisted. The purpose of this method is to set a user context once, so you do not have to specify the user each time you make a flag decision or track an event. You can define multiple user contexts.

Version

SDK v1.6.0 and higher

Description

This call creates a user context for flag decisions and events. You can call this method successfully on the Optimizely client instance, even when the instance is not fully configured yet.

Parameters

The following table lists the required and optional parameters:

ParameterTypeDescription
userId
required
stringThe ID of the user.
attributes
optional
mapA map of custom key-value string pairs specifying attributes for the user that are used for audience targeting. See the following section for more details.

Audience attributes

You can set custom audience attributes for the user, which you can then use to Target audiences. You can pass strings, numbers, Booleans, and null as custom user attribute values. If you want to target audiences based on the version of your application that they are using, you can also pass in a string formatted as a semantic version, then define a version audience condition in the Optimizely app.

🚧

Important

During audience evaluation, if you do not pass a valid attribute value for a given audience condition—for example, if you pass a string when the audience condition requires a Boolean, or if you simply forget to pass a value—then that condition will be skipped. The SDK logs will include warnings when this occurs.

Returns

Returns an OptimizelyUserContext object. For details, see OptimizelyUserContext.

Example

import "github.com/optimizely/go-sdk/pkg/client" // for v2: "github.com/optimizely/go-sdk/v2/pkg/client"

optimizelyFactory := client.OptimizelyFactory{SDKKey: "sdk-key"}
client, err := optimizelyFactory.StaticClient()
if err != nil {
 // handle error
}
// option 1: create a user, then set attributes
user := client.CreateUserContext("user123", nil)
user.SetAttribute("is_logged_in", false)
user.SetAttribute("app_version", "1.3.2")

// option 2: pass attributes when creating the user
attributes := map[string]interface{}{
	"device":       "iPhone",
  "lifetime":     24738388,
  "is_logged_in": true,
  "app_version":  "4.3.0-beta",
}
user = client.CreateUserContext("user123", attributes)

See Also

OptimizelyUserContext

Source files

The language/platform source files containing the implementation for Go is client.go.