workers-gois a Go module to run an HTTP server written in Go on Cloudflare Workers. Its root package isworkers.- This package can easily serve http.Handler on Cloudflare Workers.
- Caution: This is an experimental project.
Documentation: https://workers-go.syumai.dev — feature support, per-platform guides, the full binding reference, and the FAQ live there.
go get github.com/syumai/workers-go
Implement your http.Handler and give it to workers.Serve().
func main() {
http.HandleFunc("/hello", func (w http.ResponseWriter, req *http.Request) { ... })
workers.Serve(nil) // if nil is given, http.DefaultServeMux is used.
}- You can easily create and deploy a project from
Deploy to Cloudflarebutton.
- If you want to create a project manually, please follow the guide below.
- Node.js (and npm)
- Go 1.24.0 or later
npm create cloudflare@latest -- --template github.com/syumai/workers-go/_templates/cloudflare/worker-go- Navigate to your new project directory and initialize Go modules:
cd my-app
go mod init
go mod tidy- Start the development server:
npm start- Verify the worker is running:
curl http://localhost:8787/helloYou will see "Hello!" as the response.
- Documentation
- Feature support — supported Workers features and their status
- Quickstart — detailed setup, including the TinyGo template
- Cloudflare — bindings for KV, R2, D1, Durable Objects, Queues, Cron, and more
- Generated bindings (
exp/cloudflare) — bindings auto-generated from@cloudflare/workers-types - Deno / Deno Deploy — run the same
http.HandlerviaDeno.serve - FAQ
_examples— a runnable project for almost every featureexp/cloudflare— experimental generated bindings and how they are produced