Series: Addison-Wesley Professional Computing Series
Paperback: 400 pages
Publisher: Addison-Wesley Professional; 1 edition (November 5, 2015)
Product Dimensions: 7.4 x 1 x 9 inches
Shipping Weight: 1.4 pounds (View shipping rates and policies)
Average Customer Review: 4.8 out of 5 stars See all reviews (91 customer reviews)
Best Sellers Rank: #8,039 in Books (See Top 100 in Books) #25 in Books > Textbooks > Computer Science > Programming Languages #38 in Books > Computers & Technology > Programming > Languages & Tools #2472 in Books > Reference
[Disclaimer: I was provided with a free review copy by the publisher.]TL;DRIf you're looking to buy a comprehensive text on Go, "The Go Programming Language" is an excellent choice. But with so many free e-book introductions to Go, do you really need it? Maybe, but maybe not.OVERVIEWThe authors "assume that you have programmed in one or more other languages" and thus "won't spell out everything as if for a total beginner". Yet the book weighs in at a hefty 380 pages (over 100 pages more than my venerable 1988 K&R 2nd edition).Is it better than the free 50-page "Little Go Book", or the free 160-page "Introduction to Programming in Go" or even the freely-available 80-page Go Language Specification itself? Yes, certainly. But is it two or three or four times as good? I don't think so.So is "The Go Programming Language" worth the cost to read in both dollars *and* time? It depends on how you learn, how much you already know, and whether, for you, the good parts outweigh the bad.THE GOOD PARTSChapter 1 ("Tutorial") sets the stage for much of what is excellent about this book: fabulous examples. Beyond the obligatory "Hello World", it presents a quick look at several simplified "real world" examples, including command line text filtering, image generation/animation, URL fetching and serving a web page.The rest of the book follows this same pattern. Chapters typically present several different code examples, most of which do real things rather than just consist of toy code. They include exercises (which I didn't do), that would be good for a course or for someone who learns best by doing structured exercises.
This review mostly focuses on the presentation and typesetting of the digital edition. As far as the content, I completely echo the praise that others have lauded on this book. It is the essential book that has been missing for Go as a language. That said, it is *not* perfect, and I will touch on the criticisms I have later perhaps.However, the presentation of the Kindle/Ebook edition is literally painful to read. It a significant impediment. It is so bad, that perhaps 4 stars is much too generous. (I have seen all versions other than the nook, which will undoubtedly be the same)The line spacing is unbearably compressed – it would require many over the age of 25 to squint or reach for a ruler. The font choice and typesetting are archaic, unprofessional and lazy – exacerbated by the authors failing (forgetting?) to embed the fonts they used in the production – resulting in no better than a direct export from something you would expect from a high school student essay in Word, and some 600 "pages" of it, with the code examples set stupidly on the page. I understand the appeal and desire to have this book be a contemporary version of K&R (and content wise, it succeeds), but this is significantly sub-par that standard which even so is incompatible with the legibility requirements for reading from screen. The fact that the authors advise “adjust(ing) the font size to the smallest setting” for optimal viewing is laughable, and effectively adds insult to injury. Is the print book published in a landscape orientation? No, it isn't, and reading the ebook that way is no remedy, and no eReader device or software has the necessary controls to fully remedy it. If I were to rate the book on the presentation alone it would be a zero. It is inexcusable.
Let me start by saying that I had high expectations for this book because of the authors pedigree. I must say that all of those expectations were met. I received a digital copy of this book for review, and halfway through the book I purchased a hard copy becaue this is the reference book to have for Go.The book is laid out in a typical programming language way. You start with basic concepts and get more advanced as you progress through the book. The book does not assume you have any knowledge of Go, but it does assume you have some basic programming or computer science background. Each chapter has numerous real world examples, and as the book progresses these examples are iteratively improved upon as you learn new concepts. I really enjoyed this setup and revisiting those samples each time really helps solidify the knowledge you gained earlier. Similarly, the exercises at the end of each chapter are challenging and really force you to grasp the chapter's content. Almost all of them consist of improvements to previous samples using the knowledge you gained. Some of the examples in the early parts of the book reference multiple different future sections. I found this could be a little overwhelming at times. I wanted to skip ahead to learn those new features, but knew I needed to start from the beginning. These "in coming chapters" sections really added up in the first few chapters, and that was one of my only complaints with the book.Full source code is provided for every exercise and sample. And there is a LOT of code included. With just this book and the code samples you should be armed to really get working with Go. Throughout the book and the samples they authors point out how to write idiomatic Go code, and common pitfalls you might run into when developing in Go.