Part one of the Go compiler inner workings series