Skip to main content

Learn Go in one evening

Learn one of the hottest programming languages in a fun and engaging way.

  • 🎯 Quickly become productive by building a real-world project
  • ⏰ Complete the training in 7 hours at your own schedule
  • 💻 Code in your IDE with examples cloned by our CLI
  • 🔗 Discuss your solutions with training attendees and mentors
  • 💰 Boost your skills by learning a language in demand
Avatar 0Avatar 1Avatar 2Avatar 3Avatar 4Avatar 5Avatar 6Avatar 7Avatar 8
🔥 XXX developers are already on board
Learn Go now!

Why Go?

Why Go stays our favorite language?

Gopher with cup


Go is fast enough for low-level and high throughout applications.
Big projects compile quickly.

Easy to Deploy

Build a single binary containing all dependencies, ship to your server, and run.

Widely Adopted

Go is used across many industries and in popular open-source software, like Docker, Grafana, and Prometheus.


Go doesn't use a virtual machine. Startup times and memory usage are minimal.

Statically Typed

Using other languages won't feel the same after using Go's type system.

In Demand

n light of those aspects, Go stands out as one of the best paid among popular programming languages.


How to learn Go?

Here are the common ways to start learning Go.

Books are great and go deep on many topics. But they're also long and each chapter describes an entire concept even if you won't use it right away.

Videos are popular and seem like an easy way to pick up any topic. They work if you have the time to watch long hours of content.

Reading the standard library is the classic advice you'll get in the community. It might be a good idea if you plan to create another language or standard library.

Free online articles and examples contain some hidden gems and lots of bad advice. You can learn a lot, but it's hard to tell one from the other.

All the above miss one key thing: practice. We designed an online training where you learn this rare knowledge by building real-world projects. No boring videos to watch.

Gopher of time

You can't buy time

It's rare to find high-quality learning materials. They're often inconsistent, outdated, or incomplete. (We've been there.)

Go In One Evening distills practical knowledge and years of experience. We focus on essential topics and filter out the noise to ensure you're productive right away.

Practical Gopher


You can't learn to drive a car from a book or a video, and writing software is the same.

This training is all about practice. To grasp the topics, you'll get your hands dirty with coding. If you prefer passively watching videos, you're on the wrong website.

Practical Gopher
Gopher of success

Real-world examples

Have you ever wondered why many tutorials use a coffee machine analogy? Proper examples require work.

Abstract or too simple examples leave you unprepared for real-world challenges. In Go In One Evening, you apply what you learn to a real-world project.

Stay in your environment. Use your favorite tools.

We created a custom platform that guides you through the training. It's a unique experience that helps you learn the fastest way possible. You won't find such a learning platform anywhere else.

Work on real-life projects doesn't happen in the browser. We let you stay with your favorite tools. VS Code, GoLand, Vim, Emacs? It's up to you.

You can solve the exercises at any time that suits you best. You can start the training now, in a week, or a year.

How our trainings look like?

Based on the example of our Go Event-Driven training.

What graduates like about our platform?


The CLI tool they've got for hands-on exercises is a game-changer. The CLI tool functions like an interactive debugger, giving immediate feedback and validation as you work through coding exercises. I'm looking forward to using what I learned directly in my job.

The Discord community is also a big win. It's not every day you get to chat directly with the people who made the course. They're super helpful and quick to answer any questions. Also, they continuously take feedback and improve the course.

Damian Trzepała, Software Development Engineer

What's inside?



* based on the average time to finish the training

What will you learn?

We carefully selected only the essential topics.

You will practice each agenda item with smaller exercises, and then apply them to a complete application.

See the full list of modules below.

What you will learn
  • ✅️ Set up your Go development environment
  • ✅️ Write your first 'Hello, World!' program in Go
  • ✅️ Understand the basic structure of a Go program
  • ✅️ Use comments to document your code
You will implement
  • 🛠️️ Install Go and configure your IDE
  • 🛠️️ Create a simple Go program that outputs a greeting
  • 🛠️️ Experiment with different ways to print output
What you will learn
  • ✅️ Declare and use variables in Go
  • ✅️ Understand Go's basic data types like strings, integers, and booleans
  • ✅️ Know the difference between variable declaration and assignment
  • ✅️ Use constants for values that don't change
You will implement
  • 🛠️️ Declare and initialize variables of different types
  • 🛠️️ Perform basic string concatenation and arithmetic operations
  • 🛠️️ Convert an existing variable to a constant
What you will learn
  • ✅️ Define and call your own functions in Go
  • ✅️ Specify parameters and return values for functions
  • ✅️ Understand how to structure a basic HTTP server in Go
  • ✅️ Handle HTTP requests and return dynamic responses
You will implement
  • 🛠️️ Create reusable functions to avoid code duplication
  • 🛠️️ Implement functions that take parameters and return values
  • 🛠️️ Build a simple HTTP server that responds to requests
  • 🛠️️ Extract data from HTTP query parameters
What you will learn
  • ✅️ Store collections of data using arrays and slices
  • ✅️ Understand the differences between arrays and slices in Go
  • ✅️ Initialize collections with specific values
  • ✅️ Access elements in arrays and slices using index notation
You will implement
  • 🛠️️ Declare and work with arrays of a fixed size
  • 🛠️️ Use slices as a more flexible collection type
  • 🛠️️ Retrieve the size of arrays and slices programmatically
What you will learn
  • ✅️ Make decisions in your code using if/else statements
  • ✅️ Evaluate boolean conditions to determine execution paths
  • ✅️ Use comparison and logical operators in conditional expressions
  • ✅️ Simplify complex conditionals with the switch statement
You will implement
  • 🛠️️ Check if a number falls within a specific range
  • 🛠️️ Handle different cases based on some input
  • 🛠️️ Return error responses for invalid HTTP requests
What you will learn
  • ✅️ Understand how Go handles errors using the error type
  • ✅️ Return and check for errors in your own functions
  • ✅️ Know when and how to panic to signal unrecoverable errors
  • ✅️ Defer cleanup actions for better resource management
You will implement
  • 🛠️️ Extend functions to return errors on failure
  • 🛠️️ Check and handle errors returned by standard library functions
  • 🛠️️ Ensure files are properly closed using defer
What you will learn
  • ✅️ Store key-value pairs using the map data structure
  • ✅️ Create variadic functions that accept any number of arguments
  • ✅️ Manipulate slices by appending, merging and removing elements
  • ✅️ Collect simple program metrics like request counts and timing
You will implement
  • 🛠️️ Count occurrences of items using maps
  • 🛠️️ Defining flexible functions using variadic parameters
  • 🛠️️ Modify slices efficiently without unnecessary allocations
  • 🛠️️ Calculate and print statistics about processed requests
What you will learn
  • ✅️ Repeat code using Go's for loop construct
  • ✅️ Iterate over the elements of slices and maps
  • ✅️ Control loop execution with break and continue statements
  • ✅️ Process collections of file system entries and paths
You will implement
  • 🛠️️ Find elements in a collection matching some criteria
  • 🛠️️ Generate sequences of values succinctly with simple loops
  • 🛠️️ Traverse and filter nested data structures
  • 🛠️️ Implement a simplified version of the "ls" command
What you will learn
  • ✅️ Encapsulate related data in your own struct types
  • ✅️ Define methods on your custom types for better organization
  • ✅️ Pass complex values efficiently by passing struct pointers
  • ✅️ Appreciate Go's approach of favoring composition over inheritance
You will implement
  • 🛠️️ Define new struct types to represent meaningful concepts
  • 🛠️️ Attach relevant functionality to types through methods
  • 🛠️️ Modify structured data by passing pointers to functions
What you will learn
  • ✅️ Manage data in memory using pointers
  • ✅️ Understand how to check for null with nil values in Go
  • ✅️ Allocate values dynamically using the new function
  • ✅️ Modify variables through pointer parameters and receivers
You will implement
  • 🛠️️ Implement data structures with internal references
  • 🛠️️ Validate configurations allowing for optional fields
  • 🛠️️ Adjust algorithms to allow modification of input data
What you will learn
  • ✅️ Provide safe construction of structs using custom constructors
  • ✅️ Understand how Go uses struct tags for reflection
  • ✅️ Control access to struct internals with exported fields
  • ✅️ Serialize custom types to JSON for use in APIs
You will implement
  • 🛠️️ Ensure structs are always created in a valid state
  • 🛠️️ Adapt JSON representations of types using struct tags
  • 🛠️️ Process JSON requests into structs for easier handling
What you will learn
  • ✅️ Define contracts for types using interface definitions
  • ✅️ Implement functions and methods to satisfy interface contracts
  • ✅️ Leverage the power of Duck Typing in Go
  • ✅️ Organize code with the Repository pattern to abstract data access
You will implement
  • 🛠️️ Expand programs to support different storage options
  • 🛠️️ Generalize functions to operate on interface parameters
  • 🛠️️ Implement a simplified version of the ls command supporting different options
What you will learn
  • ✅️ Declare reusable anonymous function values
  • ✅️ Access outer variables through function closures
  • ✅️ Improve readability with named return values
  • ✅️ Ensure resources are released using defer
You will implement
  • 🛠️️ Isolate concerns using function types and interfaces
  • 🛠️️ Build generator functions for sequences of values
  • 🛠️️ Trace function execution time with defer statements
What you will learn
  • ✅️ Organize related code into packages for better modularity
  • ✅️ Control visibility of package contents with exported identifiers
  • ✅️ Manage dependencies between packages and modules
  • ✅️ Leverage third-party packages to expand functionality
You will implement
  • 🛠️️ Structure projects to encourage clean separation of concerns
  • 🛠️️ Document package functionality for other developers
  • 🛠️️ Integrate external dependencies to add new capabilities
  • 🛠️️ Clean up code organization applying package-oriented design
What you will learn
  • ✅️ Speed up execution by introducing concurrency with goroutines
  • ✅️ Communicate between concurrent processes using channels
  • ✅️ Synchronize access to shared resources with mutexes
  • ✅️ Coordinate background tasks in web services
You will implement
  • 🛠️️ Parallelize workloads to improve efficiency
  • 🛠️️ Implement concurrent pipelines passing data via channels
  • 🛠️️ Protect data integrity in the face of concurrent modifications
  • 🛠️️ Build a rate limiting middleware to protect APIs

The content was really well put together, everything builds upon what we are learning along the way and the approach of the small projects where all the knowledge is tied up together works really well!

This was a really nice course - I'd say that's a 10/10 in terms of value for money. I'm eager to start the next course from Three Dots Labs as soon as it's available!

Luís Pinto, Backend Engineer

Created by

Robert Laszczak & Miłosz Smółka

Three Dots Labs logo Three Dots Labs founders

We are the authors of the Three Dots Labs blog, and our e‑book: Go With The Domain: Building Modern Business Software in Go. These are both some of the most popular resources about advanced programming patterns in Go.

We are also authors of the Watermill library, the most popular Go library for building event-driven and message-driven applications.

We worked in many fields, including infrastructure, complex and global financial domains, healthcare, and security. In the meantime, we've built a few startups and led multiple teams. It gave us a broad perspective on software development across different organizations.

We've been building projects together for over 15 years. In 2016, we fell in love with Go's simplicity and pragmatism. In our daily work, we help businesses win using Go software.

When we meet in our free time, we like to cook and eat some steaks and burgers.

Trusted by the Go community

blog visitors
unique per year
E-book downloads
Newsletter subscribers
GitHub stars
of our projects

We have been blogging, creating open-source projects, and writing an e-book for the past six years. This work helped us get the trust of the Go community.

The best proof was that we sold 323 copies of Go Event-Driven in pre-sale without even starting work on it. In other words, over 300 people trusted us enough to pay more than $54k total on the promise that we'll deliver something they'll love.

In total, XXX people have joined Go In One Evening.


See what professional developers say.

Review avatar

Luís Pinto

Backend Engineer

The content was really well put together, everything builds upon what we are learning along the way and the approach of the small projects where all the knowledge is tied up together works really well!

This was a really nice course - I'd say that's a 10/10 in terms of value for money. I'm eager to start the next course from Three Dots Labs as soon as it's available!

Review avatar

Fernando Munoz

Developer & Tech Chieff, Microplan

I love this course! I was planning to learn Go but I find it very difficult since there was no single source where I could learn about Project structure... Base concepts of Go... Conventions... Concurrency...

All this in a fun and easy way! I think I came to the right place and I would recommend this course to anyone who would like to learn Go! And improve their skills as a Dev.

Thank you guys!!

Review avatar

Sebastian Will

Software Developer, Freelancer

I managed to break the training into smaller sessions to get a good overview about Go during my holidays. The individual topics contain concise information about the language's specifics and can be used as a short and handy reference later on.

The integration into VS code is working great; all in all it's a no fuss, hands-on primer that gets you up to speed.

Review avatar

Daniel Fenert


Very good training that systemizes essential Go knowledge with simple exercises. Good value for money.

Review avatar

Bilal Islam

Senior Developer, Freelancer

The Three Dots Labs team created a great training for all Go lovers. I had fun while I was guided to the next step every module. That is to say, I absolutely recommend it to everyone.

Review avatar

Andrés Uris

Software Developer, NaranjaX

Great training to learn and practice go fundamentals

I have enjoyed and learned a lot from this training. I feel more confident with my knowledge about programming Go and now I have a great foundation that will help me a lot in my journey with Go

Review avatar

Tobias Andersson

Site Reliability Engineer, ComeOn Group

What is often missing when learning new things is interactivity along with easy explanations for complex technical terms.

This course has all the elements that made it an incredible course, it is interesting, challenging but above all incredibly educational.

Review avatar

Juan Lasso

Del Valle University

This is one of the best programming courses online and Threedots way of teaching is awesome. The course is easy to setup and the exercises are ready to go!

Review avatar

Yehor Masalitin

Senior Software Engineer

I'm a Senior Software Engineer with experience in Java / Kotlin / Python / JS but I have never tried Go and didn't want to learn it the regular way as it was too boring to go over again of "Imagine that the variable is a box...".

This course was amazing for me, I just learned what is DIFFERENT in Go from all the other languages I worked with. Loved it. Highly recommended.

Fakhri Aunur

Master's Student of Informatics, Institut Teknologi Bandung

I enjoyed this byte-sized, incrementally challenging, concise learning. This really helped me learn new programming language effectively and efficiently as a student.

Max Wolffe

Sr. Software Engineer, Databricks

Go In One Evening is an incredible way to quickly get a working knowledge of Go!

The training is interactive and follows some excellent teaching patterns (spaced repetition, interleaving, etc). Highly recommend.

Ramzi A.

Software Engineer, Flex

This is really fantastic way to jump in head first using Go and understanding the key pieces of the language. You will use some of the key attributes that make Go unique and why you would grab it (concurrency, error handling, type safety). Can't recommend enough it is challenging at some points but I think its important to be challenged to get better at what you do.

I will be happy to purchase any other products by threedots!

Is it for you?

We want to build the best trainings possible for a specific group of developers.

This training is a perfect match if:

You already know one programming language.

You prefer to learn by doing.

You want to be productive within a few hours.

You want to learn real-life scenarios.

You like to work in your local environment.

You're ok paying to save your time.

You won't like it if:

You don't know any other programming language.

You're looking for a video course you can passively watch.

You want to learn advanced topics in depth, like memory management or performance improvements.

If you already know Go basics:

Start your journey with Go today for:


This is a net price. Local taxes may apply at checkout.

Try 17 exercises for free

24h money-back guarantee. Zero risk!

Do you want to buy more licences? Click here!

Check 17 exercises for free

Not sure if you'll fall in love with Go? Check the first 17 exercises for free, and we bet you'll want more!

Access to private Discord channels

Learning alone is hard. Ask for help and discuss your ideas with other Gophers.

Lifetime access and updates

We plan to add new modules in the future. You get all updates for free.

We are indie

Support indie developers

We are a two-developer bootstrapped company. By buying this training, you help a small indie business grow, which allows us to continue creating more trainings.

Still not sure?

We're developers ourselves, and we carefully pick our paid tools. We want you to be sure you've made a good career investment by buying our training.

If you change your mind, you can return it up to 30 days after purchase. Even if you finish the training within 30 days and don't like it. No questions asked. We'll just return your money.

I'm joining the training!
Gopher of trust


We designed this training in a way that it's possible to achieve when you have entire, uninterrupted evening.

We know that it's luxury for some people to have an entire uninterrupted evening. If it's your case our training is also for you! You can continue the training the next day or month. The result will be the same.

No... just kidding. Of course, you can do the training whenever you like ;-). We're using evening to show that you can learn Go quickly, within a few hours.

We would really like to do that, but it's just not possible as long as there are 24 hours in a day.

Instead, we provide support in a private Discord channel. You'll receive access to private channels after joining the training.

Yes! It's an important part of our mission to provide access to free materials if you're not working in the industry yet.

Please contact us via with a proof that you're a student. We'll try to reply ASAP.

Your satisfaction is our top priority. We're doing our best to make you satisfied with the training content. But it would be arrogant to think we'll be able to satisfy everyone.

Our return policy is super simple to ensure that you'll be happy with the training: you can return the training within 24 hours without any reason.

No questions asked. Of course, it would be great to know your reasons, so we're able to improve the training in the future.

We offer a 10% discount when you buy 10 or more training licences. For more details please contact us at

If you want to buy more licences, please follow this link.

One account can be used only by one user.

If you want to buy more licences, please follow this link.

If you want to buy more licences, please follow this link.

Yes. Please specify your TAX ID during checkout.

Buy now