Skip to content
/ go-kata Public template

A collection of daily coding challenges designed to help you master idiomatic Go through deliberate, repetitive practice.

Notifications You must be signed in to change notification settings

MedUnes/go-kata

Repository files navigation

🥋 Go Katas 🥋

"I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times."

(Bruce Lee)

What should it be?

  • Go is simple to learn, but nuanced to master. The difference between "working code" and "idiomatic code" often lies in details such as safety, memory efficiency, and concurrency control.

  • This repository is a collection of Daily Katas: small, standalone coding challenges designed to drill specific Go patterns into your muscle memory.

What should it NOT be?

  • This is not intended to teach coding, nor to use Go as a general-purpose learning vehicle. It is not intended to teach Go in general.

  • The focus should be, as much as possible, on challenging oneself to solve common software engineering problems the Go way.

  • Several seasoned developers spend years learning and applying best practices in production-grade contexts. When they decide to switch to Go, they often face two challenges:

    • Is there a way to transfer knowledge so that I don’t have to throw away years of experience and start from zero?

    • If yes, which parts should I focus on to recognize mismatches and use them the expected way in the Go ecosystem?

How to Use This Repo

  1. Pick a Kata: Navigate to any XX-kata-yy folder.
  2. Read the Challenge: Open the README.md inside that folder. It defines the goal, the constraints, and the "idiomatic patterns" you must use.
  3. Solve It: Initialize a module inside the folder and write your solution.
  4. Reflect: Compare your solution with the provided "Reference Implementation" (if available) or the core patterns listed.

Contribution Guidelines

Please refer to the CONTRIBUTING file

Katas Index (Grouped)

01) Context, Cancellation, and Fail-Fast Concurrency

Real-world concurrency patterns that prevent leaks, enforce backpressure, and fail fast under cancellation.


02) Performance, Allocation, and Throughput

Drills focused on memory efficiency, allocation control, and high-throughput data paths.


03) HTTP and Middleware Engineering

Idiomatic HTTP client/server patterns, middleware composition, and production hygiene.


04) Errors: Semantics, Wrapping, and Edge Cases

Modern Go error handling: retries, cleanup, wrapping, and infamous pitfalls.


05) Filesystems, Packaging, and Deployment Ergonomics

Portable binaries, testable filesystem code, and dev/prod parity.


06) Testing and Quality Gates

Idiomatic Go testing: table-driven tests, parallelism, and fuzzing.

About

A collection of daily coding challenges designed to help you master idiomatic Go through deliberate, repetitive practice.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published