Go Programming Language, The (Addison-Wesley Professional Computing Series) 1st Edition
Use the Amazon App to scan ISBNs and compare prices.
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Frequently bought together
Customers who viewed this item also viewed
From the Publisher
About the Author
Alan A. A. Donovan is a member of Google’s Go team in New York. He holds computer science degrees from Cambridge and MIT and has been programming in industry since 1996. Since 2005, he has worked at Google on infrastructure projects and was the co-designer of its proprietary build system, Blaze. He has built many libraries and tools for static analysis of Go programs, including oracle, godoc -analysis, eg, and gorename.
Brian W. Kernighan is a professor in the Computer Science Department at Princeton University. He was a member of technical staff in the Computing Science Research Center at Bell Labs from 1969 until 2000, where he worked on languages and tools for Unix. He is the co-author of several books, including The C Programming Language, Second Edition (Prentice Hall, 1988), and The Practice of Programming (Addison-Wesley, 1999).
There was a problem filtering reviews right now. Please try again later.
I own both the print and kindle editions of this book.
The book itself is great but I am very disappointed in the Kindle edition.
This is the first time that I have attempted to read a text book on a Kindle and I found that navigation within the book was extremely cumbersome. To add insult to injury all of the online code examples are line wrapped because of the Kindle formatting and there are links to out of line versions that are correctly formatted (but in a horrible font). Honestly, is that the best that Kindle can do?
I would have been better off with a PDF file of the book.
Case in point: Go builds statically-bound executables. No more runtime dependency woes from mis-matched DLL / .so versions.
Another example: a radically different approach to polymorphism and encapsulation leading to an easier and cleaner object model than any other.
The more I learn about Go, the more I am convinced that it will eventually overtake C/C++ as the defacto standard for system level development - and may even challenge Java and the dynamic languages for business-critical applications.
But not just that: it also helps get people into better coding habits.
Golang is a language based on best practices, and I feel I not only learned a new language this past Summer, but I also learned more about being a good programmer in general.
I would definitely consider using this language in bigger projects in the future, and I have already adopted several practices they listed across other languages I use.
The only things I am not a fan of with this language are the ways it implements public vs private data members and interfaces. I feel the variable name casing should not determine public or private members, because it is less explicit. I also did try a few things out, after reading, and I came across some nasty bugs that were not the easiest to track, due to the implicit interface implementation -- things would go from implementing part of my interface and not another to getting changed and implementing them in reverse, even with only the parts in question being changed; I would much rather say "implements x, y, z", and the compiler would know EXACTLY what I'm trying to do.
I especially appreciated the way this book was organized: the very first chapter starts with several illustrative examples before even introducing the language itself. Then the next several chapters cover all of the basic & advanced features of the language. The final few chapters cover some of the other concerns of modern professional programmers beyond just the language itself: the build environment, packaging, testing, etc.
If you want to learn the Go programming language, or if you already know how to program in Go but want to improve your understanding of the language, then this is the first & only book you'll need.
My only complaint that I have for the book is that there are sections that feel a little glazed over to me. Topics are just briefly touched on and then they move on. However, this not impede the reader in learning the major portions and important features of the language.
As such perhaps it may be a reference book for a pro GO programmer. But for a beginner its a disappointment!
Top international reviews
I'm learning for myself, for my own apps and the large scale distributed systems I build for clients. I'm also interested in Go for my kids.
The book is good, its clear and succinct. But I've dropped 2 stars from it because it really needs to go into detail about using Go in the real-world. This is a problem with most coding books and probably why most people end up knowing syntax but "can't code" or build spaghetti.
I need to know how to build a large app. Learning the syntax of the language is really only 20% of the story. The rest is how to organise code, both on disk, but into reusable modules/packages/libraries.
Go is very different from other class-based languages, so the application architecture is really important. It was designed to tackle the problem of applications at scale so the book needs to discuss the impact of this on a product team.
I'm in the dark about how Go programmers structure things. Go isn't very popular, so its hard to find this information online, and since I work alone, I rely heavily on a strong online community.
I appreciate the rest of my review isn't about the book, but learning a new language is like picking a country to live in.
A Bad Time to Learn Go
From my understanding, Go is in a transition period. It seems to have only recently gained a proper dependency manager which is a fundamental thing, so a fundamental change.
There's a lot of chatter online about ways people have worked around the lack of a dependency manager by arranging files on disk. Arranging files really matters in Go in a way it doesn't seem to in other languages. But it's hard to discern what is the "old way" vs. the new approach using Go Modules.
Loss of Trust
Furthermore, I found that using VS Code to look at the downloaded samples in the book, I was unable to simply rename a variable. The error was strange, it couldn't "find" the code file I had open on screen. I soon found myself hitting other arcane errors as I tried to fix the issue.
The tooling seems to be still catching up with the move to Go Modules. Go used to really care about where and how the files are laid out on disk, but I think in recent months it doesn't matter so much.
I solved the rename problem by moving the code into a /src subfolder. However, the official online guides suggest I don't need to do this. As I type this, I still don't know the "right way" and I can't find help online. I'm unable to even make a start and have lost trust in the whole thing.
The Go Community is Thin and Hostile
The real problem came when I posed a question on StackOverflow. I have a reputation of over 30,000 and have been helping people on that forum for years, and yet my questions were heavily down-voted without suggesting how they could be improved, or answered in comments with nothing but a link to the official documentation. Even when another Go coder came to help with a full answer, he was down-voted.
When I learned C# back in 2004, it was good fun learning with other people across the web. I don't know where the Go people hang out and I searched but found no-one. On Reddit, I saw people discussing that Go has a hostile, aloof community which worried me.
Programming Needs to Clean its Act Up
Go looks like it could be a great language for kids, esp learning on fun hardware devices. Pretty soon, all our children will be learning to code and our teachers will need a lot of support, so I'm sad that many programmers online are so unhelpful and that if I a 42 year old English speaking white man can find help, kids, women and minorities don't stand a chance.
I'm going to leave it for another 2 years until well after Go 2 and see if it picks up momentum and wait for things to settle down and whether a welcoming community grows around it, or if Python keeps on growing.
This book is best as your second (or your first, if you are not in a great deal of a hurry), and more thorough coverage of the language, and as a ready reference while you tackle projects.
If I had any complaints, it would be a wish that they used bigger print in the paperback ... and that an eBook version is made available and discounted for owners of the paperback.
Maybe some will want a cheat-sheet type of book containing less detail but this book will actually help you grok Go. The authors are also approachable and helpful. Highly recommended!
Good book. It assumes some prior programming experience (eg it doesn't bother explaining scopes, functions, if's and else's). Quite refreshing to have a book that just gets on with it.
The examples used throughout the book are not very different from other Go books, but the authors incrementally build on these examples to introduce or showcase new concepts.
As a minor downside of the book, (personal opinion) I would prefer the authors to provide much more clear and understandable explanations of some examples, however they have done a great job to provide avery reasonable flow.
Excellent book would recommend to anyone looking at learning Go.
I have read several other go-books but this one is trully magnificent and I highly recommend it to anyone looking to start learning Go.
I'd 100% recommend this for anyone using Go, or learning.
Other than that it was a very satisfying book to work through, highly recommended