Beyond Effective Go: Part 1 - Achieving High-Performance Code