A collection of articles and videos to understand Golang internals.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Golang Internals Resources

This is a curated collection of Articles and Videos about Golang internals. It is intended for advanced/intermediate programmers who are new to Golang and want to understand what happens under the hood. Feel free to add to it!

Data Structures and Data Types


Understanding Nil Talk by Francesc Campoy


Go Slices: usage and internals from The Go Blog


Macro View of Map Internals In Go by William Kennedy

Inside the Map Implementation Talk by Keith Randall


Go Data Structures: Interfaces by Russ Cox

Golang concepts from an OOP point of view by Lucio Tato

Understanding Go Interfaces Talk by Francesc Campoy

Hacking the Golang Type System

Hacking Go's type system by Tiago Katcipis

Concurrency Primitives


How Goroutines Work by Krishna Sundarram


Channels in Golang by @TapirLiu


"go test -race" Under the Hood Talk by Kavya Joshi


Scalable Go Scheduler Design Doc by Dmitry Vyukov from the Go 1.1 Design Docs

Go Preemptive Scheduler Design Doc by Dmitry Vyukov from the Go 1.3 Design Docs

How does the golang scheduler work? by Ian Lance Taylor

Go's work-stealing scheduler by Jaana B. Dogan


How Do They Do It: Timers in Go by Alexander Morozov


The Go Memory Model from the Go Documentation

Contiguous stacks in Go by Agis Anastasopoulos

Contiguous Stacks from the GO 1.3 Design Docs

Garbage Collection

Golang’s Real-time GC in Theory and Practice by Will Sewell

Request Oriented Collector (ROC) Algorithm by Rick Hudson and Austin Clements and discussion at golang-dev


A Quick Guide to Go's Assembler from the Go Documentation

The Design of the Go Assembler talk by Rob Pike

Dropping Down Go Functions in Assembly (slides) talk by Michael Munday

Golang Internals Series of Blog Posts by Siarhei Matsiukevich

SSA compiler

SSA Backend for the Go Compiler by Keith Randall

Algorithms used by SSA compiler

Simple and Efficient Construction of Static Single Assignment Form by Braun, Buchwald, Hack, Leißa, Mallon, and Zwinkau

A Linear Time Algorithm for Placing Φ-Nodes by Sreedhar & Gao


A lot of other information can be gathered from the Go Design Documents and from the (now defunct) Unofficial Go Internals wiki