Source: https://swtch.com/usenix/go-course.pdf