Preface
Go is an open source programming language that lets programmers easily build reliable and scalable programs. It does this by offering a simple syntax which makes it fun to write correct and predictable code using concurrency idioms and a robust standard library.
Go has a large and active online community and there are several Go conferences that take place around the world yearly. Starting with https://golang.org/, you will find numerous places on the web that provide documentations, blogs, videos, and slides that cover a wide range of Go-related topics. On GitHub, the story is no different; some of the best known projects that are driving the future of cloud computing, for instance, are written in Go with an ever growing list.
As you would expect, getting started with Go is simple, fast, and well documented. However, “getting into” Go can be more challenging, especially for newcomers from other languages. My first attempt at Go failed. Even after reading the prescribed documentations and going through the tutorials, there was a gap in understanding driven by my own biases from previous programming experiences. Months later I returned to Go and got into it. This time I read the language specs, I read blogs, watch videos, and searched the web for any discussion that provided design motivations and in-depth explanations of the language.
Learning Go is a book intended to help new, and seasoned programmers alike, to get into the Go programming language. With this book, I have attempted to write the book I would have like to have read when I was starting out with Go. It distills the language specs, the documentations, the blogs, the videos, slides, and my own experiences of writing Go into content that carefully provides the right amount of depth and insights to help you understand the language and its design.
I hope that you enjoy it.