/go-learning-projects

A collection of projects for learning the Go programming language while also learning about the implementation details of open-source technologies you likely already use.

Primary LanguageGo

This repository contains a variety of projects intended for practicing the Go programming language. Each of these projects is intended to provide experience with Go, while also providing exposure to the implementation details of an interesting piece of technology you probably already use, such as Statsd, Memcache or Redis.

The intended way to use these projects is:

  1. Select one of the below projects.
  2. Read it's README.
  3. Do not look at the reference implementations.
  4. Take a stab at implementing it yourself.
  5. Take a look at the reference implementations.
  6. File issues if you have suggestions for improvements.

Caveat: these projects are absolutely not trying to be production grade solutions! These are learning projects, and I would never recommend that you replace Statsd with the output of the below Statsd project, etc.

Projects:

  1. Writing a Statsd Server in Go.
  2. Writing Redis in Go.
  3. Writing Memcached in Go.
  4. Writing a lexer/parser in Go.

Future project ideas:

  1. Writing a Redis server in Go.
  2. Writing a PostgreSQL server in Go.
  3. Consuming MySQL binlog in Go.
  4. Write a Dynamo inspired key-value store in Go.