2021-02-25 16:01:36 +01:00
---
id: go_sdk
title: GO SDK
---
2021-05-18 13:31:54 +02:00
> You will need your `API URL` and your `API token` in order to connect the Client SDK to you Unleash instance. You can find this information in the “Admin” section Unleash management UI. [Read more](../user_guide/api-token)
2021-05-04 16:08:21 +02:00
2021-06-04 11:17:15 +02:00
### 1. Install unleash-client-go {#1-install-unleash-client-go}
2021-02-25 16:01:36 +01:00
2021-03-09 22:19:03 +01:00
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
```
2021-06-04 11:17:15 +02:00
### 2. Initialize unleash {#2-initialize-unleash}
2021-03-09 22:19:03 +01:00
The easiest way to get started with Unleash is to initialize it early in your application code:
```go
2021-02-25 16:01:36 +01:00
import (
2021-03-09 22:19:03 +01:00
"github.com/Unleash/unleash-client-go/v3"
2021-02-25 16:01:36 +01:00
)
2021-03-09 22:19:03 +01:00
2021-02-25 16:01:36 +01:00
func init() {
2021-03-09 22:19:03 +01:00
unleash.Initialize(
unleash.WithListener(& unleash.DebugListener{}),
unleash.WithAppName("my-application"),
unleash.WithUrl("http://unleash.herokuapp.com/api/"),
2021-05-18 13:31:54 +02:00
unleash.WithCustomHeaders(http.Header{"Authorization": {"< API token > "}}),
2021-03-09 22:19:03 +01:00
)
2021-02-25 16:01:36 +01:00
}
```
2021-03-09 22:19:03 +01:00
2021-06-04 11:17:15 +02:00
### 3. Use unleash {#3-use-unleash}
2021-03-09 22:19:03 +01:00
2021-05-04 16:08:21 +02:00
After you have initialized the unleash-client you can easily check if a feature toggle is enabled or not.
2021-03-09 22:19:03 +01:00
```go
unleash.IsEnabled("app.ToggleX")
```
2021-06-04 11:17:15 +02:00
### 4. Stop unleash {#4-stop-unleash}
2021-03-09 22:19:03 +01:00
2021-05-04 16:08:21 +02:00
To shut down the client (turn off the polling) you can simply call the destroy-method. This is typically not required.
2021-03-09 22:19:03 +01:00
unleash.Close()
2022-09-15 09:02:10 +02:00
### Built-in activation strategies {#built-in-activation-strategies}
2021-03-09 22:19:03 +01:00
2021-05-04 16:08:21 +02:00
The Go client comes with implementations for the built-in activation strategies provided by unleash.
2021-03-09 22:19:03 +01:00
- DefaultStrategy
- UserIdStrategy
- FlexibleRolloutStrategy
- GradualRolloutUserIdStrategy
- GradualRolloutSessionIdStrategy
- GradualRolloutRandomStrategy
- RemoteAddressStrategy
- ApplicationHostnameStrategy
2021-11-24 10:53:56 +01:00
Read more about the strategies in [the activation strategies document ](../user_guide/activation_strategy ).
2021-03-09 22:19:03 +01:00
2021-06-04 11:17:15 +02:00
### Unleash context {#unleash-context}
2021-03-09 22:19:03 +01:00
2022-09-07 14:26:23 +02:00
In order to use some of the common activation strategies you must provide an [_Unleash context_ ](../user_guide/unleash-context.md ). This client SDK allows you to send in the unleash context as part of the `isEnabled` call:
2021-03-09 22:19:03 +01:00
```go
ctx := context.Context{
UserId: "123",
SessionId: "some-session-id",
RemoteAddress: "127.0.0.1",
}
unleash.IsEnabled("someToggle", unleash.WithContext(ctx))
```
2021-02-25 16:01:36 +01:00
Read more at [github.com/Unleash/unleash-client-go ](https://github.com/Unleash/unleash-client-go )