Build distributed applications using the Dapr Go SDK. The Dapr Go SDK provides client libraries to interact with Dapr building blocks and APIs.

## Resources

- [Dapr Go SDK GitHub](https://github.com/dapr/go-sdk)
- [Dapr Go SDK GoDoc](https://pkg.go.dev/github.com/dapr/go-sdk)
- [Dapr Go SDK Documentation](https://docs.dapr.io/developing-applications/sdks/go/)

**Prerequisites:**

- Go 1.19+ ([Download](https://go.dev/doc/install))
- [Dapr Go Client/Server SDK](https://github.com/dapr/go-sdk)

## Installation

Install the Dapr Go SDK via go get:

```bash
go get github.com/dapr/go-sdk/client
```

## Dapr Client APIs

Use the Dapr Client to interact with Dapr building blocks and APIs with Go-specific examples and code samples.

- [State Management](https://docs.dapr.io/developing-applications/sdks/go/go-client/#state-management) — Store and retrieve application state using key-value pairs with Go code examples
- [Service Invocation](https://docs.dapr.io/developing-applications/sdks/go/go-client/#service-invocation) — Invoke methods on other services securely and reliably with Go SDK
- [Publish](https://docs.dapr.io/developing-applications/sdks/go/go-client/#publish-messages) — Publish events to topics for event-driven communication in Go
- [Bindings](https://docs.dapr.io/developing-applications/sdks/go/go-client/#output-bindings) — Interact with external systems through output bindings using Go
- [Secrets Management](https://docs.dapr.io/developing-applications/sdks/go/go-client/#secret-management) — Securely retrieve secrets from configured secret stores with Go examples
- [Conversation](https://docs.dapr.io/developing-applications/building-blocks/conversation/howto-conversation-layer/) — Interact with Large Language Models (LLMs) using the Dapr Conversation API with Go

## Server Extensions

Build services that can be invoked by other services and subscribe to topics using Go.

- [Service Invocation Server](https://docs.dapr.io/developing-applications/sdks/go/go-service/http-service/#service-invocation-handler) — Create services that can be invoked by other Dapr applications using HTTP or gRPC
- [Pub/Sub Subscriptions](https://docs.dapr.io/developing-applications/sdks/go/go-service/http-service/#event-handling) — Subscribe to topics and handle messages in Go applications using HTTP or gRPC
- [Binding Invocation Handler](https://docs.dapr.io/developing-applications/sdks/go/go-service/http-service/#binding-invocation-handler) — Handle input bindings from external systems using HTTP or gRPC in Go

## Advanced Features

- [Actors](https://docs.dapr.io/developing-applications/sdks/go/go-client/#actors) — Build virtual actors with state, timers, and reminders using Go SDK
- [Workflow](https://docs.diagrid.io/develop/workflows/go-sdk) — Create durable, long-running workflows with Go code examples
- [Jobs](https://docs.dapr.io/developing-applications/sdks/go/go-client/#jobs) — Schedule, get, and delete jobs with Go SDK examples
- [Cryptography](https://docs.dapr.io/developing-applications/sdks/go/go-client/#cryptography) — Encrypt and decrypt data using configured cryptography components in Go
- [Distributed Lock](https://docs.dapr.io/developing-applications/sdks/go/go-client/#distributed-lock) — Acquire and release distributed locks for synchronization with Go
- [Authentication](https://docs.dapr.io/developing-applications/sdks/go/go-client/#authentication) — Configure API token authentication for Dapr client in Go

## Getting Started

- [Go Examples](https://github.com/dapr/go-sdk/tree/main/examples) — Samples that highlight the Go SDK Capabilities
- [Go Client Documentation](https://docs.dapr.io/developing-applications/sdks/go/go-client/) — Complete Go client SDK guide with code examples

### Catalyst Quickstarts

- [State Quickstart](https://docs.diagrid.io/getting-started/quickstarts/dapr-apis/state) — Get started with state management in Catalyst
- [Pub/Sub Quickstart](https://docs.diagrid.io/getting-started/quickstarts/dapr-apis/pubsub) — Get started with publish and subscribe in Catalyst
- [Service Invocation Quickstart](https://docs.diagrid.io/getting-started/quickstarts/dapr-apis/invocation) — Get started with service invocation in Catalyst
