Go - 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

Nil

Understanding Nil Talk by Francesc Campoy

Slices

Maps

Inside the Map Implementation Talk by Keith Randall

Interfaces

Understanding Go Interfaces Talk by Francesc Campoy

Hacking the Golang Type System

Hacking Go's type system by Tiago Katcipis

Concurrency Primitives

Goroutines

How Goroutines Work by Krishna Sundarram

Channels

Channels in Golang by @TapirLiu

Tools

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

Scheduler

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

Timers

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

Memory

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

Compilation

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

Golang Internals Series of Blog Posts by Siarhei Matsiukevich

SSA compiler

Algorithms used by SSA compiler

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

General

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

Go - Internals Resources
Interactive graph
On this page
Data Structures and Data Types
Nil
Slices
Maps
Interfaces
Hacking the Golang Type System
Concurrency Primitives
Goroutines
Channels
Tools
Scheduler
Timers
Memory
Garbage Collection
Compilation
SSA compiler
General