Join 5,000+ Go developers

The best place to learn Go on the internet

Bite-sized lessons, deep courses, and a gamified practice app — everything you need to go from "Hello, World" to production systems.

ByteSizeGo gopher mascot
One useful email at a time — no spam, unsubscribe anytime.
176+interactive exercises
256free blog posts
30+hours of courses
New

Learn Go the Fun Way with GoFlow

Master Go through bite-sized, interactive exercises. Earn XP, build streaks, and level up your skills — one lesson at a time.

  • 176+ interactive exercises you can finish in minutes
  • Earn XP, keep daily streaks, and level up your gopher
  • Real Go code from day one — no setup required
Free to start — no card required
+10 XP
🔥 7⚡ 240 XP
❤️ 5
Fill in the blank
func main() {   msg := "Hello, Gopher!"   fmt.Println(msg) }
fmt.Printlnlog.Fatalprint()
GoFlow Gopher Mascot
Courses

Go deep, one course at a time

Production-focused video courses used by engineers at some of the biggest companies in the world.

Free List

58 Companies Hiring Go Engineers in 2026

Careers pages, remote policies, and how each company uses Go in production.

Google Cloudflare Docker Shopify Datadog HashiCorp +52
Join 5,000+ Go developers
Blog

Latest from the blog

Read all 256 posts →
advanced topicsOct 18, 2026

How net-merge Load Balances TCP Flows Across Network Adapters in Go

net-merge distributes TCP flows across usable adapters with net.Dialer Control hooks. A walk through socket binding, errno policy, health probes, and its IPv6 fallback.

Read More →
advanced topicsOct 17, 2026

Interactive Refactoring in gopls: How Multi-Step Code Actions Work

gopls v0.24.0 can ask you questions before it edits your code. Here is how the new LSP form protocol works and what it unlocks for Go refactoring.

Read More →
advanced topicsOct 15, 2026

Go 1.27 Drains Unread HTTP/1 Response Bodies So Connections Get Reused

Go 1.27's net/http.Transport drains unread HTTP/1 bodies in the background, capped at 50ms or 256KB. What changes once your minimum Go version moves to 1.27.

Read More →
advanced topicsOct 14, 2026

Agent Chrome Relay in Go: Function Hooks, Exit-Code Errors, and Ordered JSON

A function hook wired by main, exit codes carried by error values, and why agent-chrome-relay hand-parses interleaved flags and arguments.

Read More →
advanced topicsOct 13, 2026

ARTEX in Go: Exit Codes as a Restart Protocol, a Hand-Written Asset DSL, and One-Interface Row Scanning

Reading the ARTEX source: exit codes that talk to a supervisor script, a hand-rolled query parser that compiles to SQL, and CIDR matching you can test without a database.

Read More →
advanced topicsOct 11, 2026

How once Caches Command Output in Go: Unix Sockets, HMAC Keys, and Wall-Clock Expiry

A walkthrough of alex0ptr/once, a Go CLI that caches stdout in a background daemon over a Unix socket, with HMAC cache keys and wall-clock expiry.

Read More →
Read all 256 blog posts →