--- id: go_sdk title: GO SDK --- ### 1. Install unleash-client-go To install the latest version of the client use: ```bash go get github.com/Unleash/unleash-client-go/v3 ``` If you are still using Unleash Server v2.x.x, then you should use: ```bash go get github.com/Unleash/unleash-client-go ``` ### 2. Initialize unleash The easiest way to get started with Unleash is to initialize it early in your application code: ```go import ( "github.com/Unleash/unleash-client-go/v3" ) func init() { unleash.Initialize( unleash.WithListener(&unleash.DebugListener{}), unleash.WithAppName("my-application"), unleash.WithUrl("http://unleash.herokuapp.com/api/"), unleash.WithCustomHeaders(http.Header{"Authorization": {""}}), ) } ``` ### 3. Use unleash After you have initialized the unleash-client you can easily check if a feature toggle is enabled or not. ```go unleash.IsEnabled("app.ToggleX") ``` ### 4. Stop unleash To shut down the client (turn off the polling) you can simply call the destroy-method. This is typically not required. unleash.Close() ### Built in activation strategies The Go client comes with implementations for the built-in activation strategies provided by unleash. - DefaultStrategy - UserIdStrategy - FlexibleRolloutStrategy - GradualRolloutUserIdStrategy - GradualRolloutSessionIdStrategy - GradualRolloutRandomStrategy - RemoteAddressStrategy - ApplicationHostnameStrategy Read more about the strategies in [activation-strategy.md](). ### Unleash context In order to use some of the common activation strategies you must provide a [unleash-context](https://github.com/Unleash/unleash/blob/master/docs/unleash-context.md). This client SDK allows you to send in the unleash context as part of the `isEnabled` call: ```go ctx := context.Context{ UserId: "123", SessionId: "some-session-id", RemoteAddress: "127.0.0.1", } unleash.IsEnabled("someToggle", unleash.WithContext(ctx)) ``` Read more at [github.com/Unleash/unleash-client-go](https://github.com/Unleash/unleash-client-go)