

Buy anything from 5,000+ international stores. One checkout price. No surprise fees. Join 2M+ shoppers on Desertcart.
Desertcart purchases this item on your behalf and handles shipping, customs, and support to Israel.
The authoritative resource to writing clear and idiomatic Go to solve real-world problems Google’s Go team member Alan A. A. Donovan and Brian Kernighan, co-author of The C Programming Language , provide hundreds of interesting and practical examples of well-written Go code to help programmers learn this flexible, and fast, language. It is designed to get you started programming with Go right away and then to progress on to more advanced topics. Basic components : an opening tutorial provides information and examples to get you off the ground and doing useful things as quickly as possible. This includes: command-line arguments gifs URLs web servers Program structure : simple examples cover the basic structural elements of a Go program without getting sidetracked by complicated algorithms or data structures. Data types: Go offers a variety of ways to organize data, with a spectrum of data types that at one end match the features of the hardware and at the other end provide what programmers need to conveniently represent complicated data structures. Composite types : arrays slices maps structs JSON test and HTML templates Functions : break a big job into smaller pieces that might well be written by different people separated by both time and space. Methods : declarations with a pointer receiver struct embedding values and expressions Interfaces : write functions that are more flexible and adaptable because they are not tied to the details of one particular implementation. Concurrent programming : Goroutines, channels, and with shared variables. Packages : use existing packages and create new ones. Automated testing : write small programs that check the code. Reflection features : update variables and inspect their values at run time. Low-level programming : step outside the usual rules to achieve the highest possible performance, interoperate with libraries written in other languages, or implement a function that cannot be expressed in pure Go. Each chapter has exercises to test your understanding and explore extensions and alternatives. Source code is freely available for download and may be conveniently fetched, built, and installed using the go get command. Review: The best programming language book I read for a while - I like GO because It implements cleanly such modern features as abstract data type, data encapsulation, object composition, interface, package, CSP model (Tony Hoare) concurrent programing, multi-value-return function, deferred function calls, garbage collection, exporting names by capitalization, simple but effective exception handling and memory model. It is a static type language. Higher abstract data types such as map (hash table), string, array and slice are built in to simplify memory management. Its syntax is succinct (only 25 keywords). Yet using it correctly can lead to powerful program constructs. Little redundancies are built into the language. As such, there are not many alternate ways to do one thing which leads to codes that are easy to understand and maintain. The designers deliberately choose to implement features to support object composition instead of inheritance, to handle exception where it happens instead of the throw and catch clauses, to use simple "struct literals" to initialize abstract data type instead of constructor functions, and "type" expression to help users consistently define user types, interface (abstract) type as a standard protocols to call different concrete-objects methods (the correct way to implement polymorphism). It does not have default arithmetic type conversion, and function name overloading, which together with class inheritance (function overwrite), constructor functions, throw-and-catch exception handling are the sources of needlessly programing complexity. Importantly, both procedure (functions and data structures) and object-oriented (objects and methods) methodologies can be used. There are just enough features that help make GO a pleasant language to write. All features are careful designed to work well together which facilitate a program model that is quite powerful, but simple to learn, reason, write, and support. The book is well written by a GO expert programmer and a computer pioneer and noted author of programing books. Concepts are coherently and timely presented. Examples are usually not code fragments, but complete programs which can be compiled and run. Programs of complex concepts are presented in multiple versions from simpler to more elaborated ones. Like the efficient design of GO, the book is never overwritten. It is the most enjoyable programing book I have read in a long while. Review: A Fantastic Read - This book is not only one of the best books I've read on Go, but also one of the best programming books I've read in general. It is easy to understand and well edited. I thought the first chapter was really entertaining, explaining the origins of go (Plan 9, etc.), and the pacing from there is really great for my tastes. It's not overly verbose (there are a few sentences that are short but pack a punch that I re-read a few times just to make sure I understood them) and it's not trying to teach you how to program. I am a gopher by way of .NET Core (among others), and this helped me immensely. It explains *why* golang is the way it is as well as nearly all aspects of the language. I have been programming professionally for > 15 years but I became a golang dev in a "trial by fire" manner. I took over a full-stack Angular/go project that was written by a brand new developer, so there were a ton of terrible practices / bugs and it was already in production (as it turns out, in the real world things are sometimes less than ideal!). I read the docs, did the "Tour of Go" (which is really nice, by the way) and "Go by Example" (also recommend), and hit the ground running. Go is a simple language to learn, so I was able to squash bugs and ship new features immediately; but this book really helped flesh out the gaps in my knowledge. If you have some experience programming but are new to Go (or want to dig deeper), this is the one to get. If you are new to programming, I would approach this with some trepidation. I don't think it's completely out of the question for a brand new programmer, but you might have to do some googling along the way to help you with concepts that maybe aren't explained in detail in this book because it's assumed they are already known.



| Best Sellers Rank | #63,715 in Books ( See Top 100 in Books ) #15 in Computer Programming Languages #74 in Programming Languages (Books) |
| Customer Reviews | 4.7 out of 5 stars 1,487 Reviews |
C**M
The best programming language book I read for a while
I like GO because It implements cleanly such modern features as abstract data type, data encapsulation, object composition, interface, package, CSP model (Tony Hoare) concurrent programing, multi-value-return function, deferred function calls, garbage collection, exporting names by capitalization, simple but effective exception handling and memory model. It is a static type language. Higher abstract data types such as map (hash table), string, array and slice are built in to simplify memory management. Its syntax is succinct (only 25 keywords). Yet using it correctly can lead to powerful program constructs. Little redundancies are built into the language. As such, there are not many alternate ways to do one thing which leads to codes that are easy to understand and maintain. The designers deliberately choose to implement features to support object composition instead of inheritance, to handle exception where it happens instead of the throw and catch clauses, to use simple "struct literals" to initialize abstract data type instead of constructor functions, and "type" expression to help users consistently define user types, interface (abstract) type as a standard protocols to call different concrete-objects methods (the correct way to implement polymorphism). It does not have default arithmetic type conversion, and function name overloading, which together with class inheritance (function overwrite), constructor functions, throw-and-catch exception handling are the sources of needlessly programing complexity. Importantly, both procedure (functions and data structures) and object-oriented (objects and methods) methodologies can be used. There are just enough features that help make GO a pleasant language to write. All features are careful designed to work well together which facilitate a program model that is quite powerful, but simple to learn, reason, write, and support. The book is well written by a GO expert programmer and a computer pioneer and noted author of programing books. Concepts are coherently and timely presented. Examples are usually not code fragments, but complete programs which can be compiled and run. Programs of complex concepts are presented in multiple versions from simpler to more elaborated ones. Like the efficient design of GO, the book is never overwritten. It is the most enjoyable programing book I have read in a long while.
D**.
A Fantastic Read
This book is not only one of the best books I've read on Go, but also one of the best programming books I've read in general. It is easy to understand and well edited. I thought the first chapter was really entertaining, explaining the origins of go (Plan 9, etc.), and the pacing from there is really great for my tastes. It's not overly verbose (there are a few sentences that are short but pack a punch that I re-read a few times just to make sure I understood them) and it's not trying to teach you how to program. I am a gopher by way of .NET Core (among others), and this helped me immensely. It explains *why* golang is the way it is as well as nearly all aspects of the language. I have been programming professionally for > 15 years but I became a golang dev in a "trial by fire" manner. I took over a full-stack Angular/go project that was written by a brand new developer, so there were a ton of terrible practices / bugs and it was already in production (as it turns out, in the real world things are sometimes less than ideal!). I read the docs, did the "Tour of Go" (which is really nice, by the way) and "Go by Example" (also recommend), and hit the ground running. Go is a simple language to learn, so I was able to squash bugs and ship new features immediately; but this book really helped flesh out the gaps in my knowledge. If you have some experience programming but are new to Go (or want to dig deeper), this is the one to get. If you are new to programming, I would approach this with some trepidation. I don't think it's completely out of the question for a brand new programmer, but you might have to do some googling along the way to help you with concepts that maybe aren't explained in detail in this book because it's assumed they are already known.
C**Y
Naturally captures the motivations that informed the language designers
If you want to learn the Go programming language using a printed book, you can't really go wrong with this one. People (of a certain age!) who grew up with K&R being a gold standard for language documentation, will certainly recognize the same qualities in this text. Other than an overly long introductory chapter, it is brief, to the point, and accurate. It uses realistic, and complete, examples to illustrate the design philosophy behind the language. All the code is easily downloadable using standard Go tools, so it is easy to try things out as you learn. It is probably worth noting that the book is very slightly dated (mine is a 2015 first printing; I only needed to learn Go for real a full five years after I purchased it!). Go has obviously evolved since the publication of the book. Most notably it now has a real module system. Many small tweaks have also been made to the language and platform. For example, error wrapping, and allowing for the embedding of interfaces with overlapping methods. Obviously, these are not in the book, but for a working programmer I believe it still remains a complete introduction to the language. Understanding the new changes in the context of the information in the book actually gave me a much better appreciation for how the language designers (and community) think about programming in Go.
B**D
Excellent, essential content. Awful and inexcusable presentation (typesetting, formatting)
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. If one cannot publish the book properly and as intended, then one absolutely should not. I am sure others aren't as 'bothered' – good for them. Most people don't have a terribly strong sense of smell, either. If legibility is important to you, if typesetting is important to you, if you love Knuth and everything he stands for, BE WARNED. Fortunately, we are programmers (or we want to be), and perhaps there might be means to, in effect, break the book file to alter it to something readable. But to do so is wholly illegal, and as a result has absolutely no bearing when reviewing the presentation. What makes it so painful is that this is such an essential book for this language, a legitimate successor for K&R (and probably the only one) for the only language that really could be considered a contemporary replacement for C. I will try to expand further at a later time (with an update to this review) on that perspective and where I think the content of this book fails, as no book is perfect, certainly not K&R, but given the damning paragraph above it would be deceptive to say anything more than the following sentences: The content is excellent and essential. It unquestionably has helped me, and will help me in the future. It would be helpful to anybody trying to learn Go who has some prior programming experience. It is the ideal book to read after doing 'A Tour of Go' (tour.golang.org) if you want to learn about Go and how to use it. To rate it lower than four stars, in spite of the appalling presentation of the ebook would be ridiculous. This is the best book on Go, hands down. P.S. If you are working through the book (any version) and would like to talk with others, get help on the examples, or whatever else I suggest you join the Gophers Slack (gophers.slack.com) and in particular join the #gopl channel. I cannot praise the wonderfully helpful fellow gophers on there enough for someone who is earnestly trying to learn Go at any level. EDIT: My apologies for not including the relevant links to the Gophers Slack! It was set up by Gopher Academy: https://blog.gopheracademy.com/gophers-slack-community/ Here's the direct link to the invite request: http://bit.ly/go-slack-signup It's usually an almost immediate response.
A**R
Thorough Introduction to Go
I started picking up Go about a month before I read this book, so going into I had a working familiarity with Go, having begun using it on a few side projects. This book provided me with not only a great introduction to the language but also gave me the confidence that I could write good, idiomatic Go code. I find Go to be a really enjoyable language to write, and this book provided a lot of great real world examples of how to use Go, while being general enough that its easy for the reader to see how the patterns that are used can be easily applied to many other situations. Everything other language I know, including Python, Ruby, and Java, I've learned in a haphazard way, reading code snippets, trying things out, and searching Stackoverflow. After reading this book however I feel I've reached, in only a month, a point in Go, that took me perhaps close to a year to reach in those other languages. Ultimately, I would highly recommend this book to anyone new to Go as well as people who may be familiar with the language but want to cover all of the fundamentals.
D**E
One of the top five CS/programming books I have ever read!
I had high expectations coming into this book, given that the author was Kernighan. After finishing the book, I can easily say that my expectations were too low. This book blew me away. The detailed explanations of not only the Go language but general computer science topics were a delight to read. In my experience, a lot of computer science books get too bogged down in low level details and forget to come up for air and give the reader practical use cases. This book is full of great examples of idiomatic Go that have real world applications, a wonderful mix of cookbook style examples and introductory explanations. The Go Programming Language might have ruined me because it will now be the book I compare all future computer science books with and it will be a tall task to measure up. I actually went through the book twice. On the first pass I read for comprehension. On the second pass, I typed out all of the examples and made sure I fully understood the subtleties that I missed by just reading them. I can easily say this is the only Go book you will need to become proficient in the language (well the book and a lot of practice).
P**I
Excellent Book not for Beginners
This is the one book to rule them all when it comes to learning Go. It gives a clear introduction to the fundamentals of the language which give you a strong foundation in tackling a variety of different problems. The exercises at the end of each section are well thought out and an additional vehicle for learning what was taught. It's simply not enough to just read, the craft must be practiced. A lot of the negative reviews here have misguided expectations of the purpose of this book. This is not a beginner friendly programming book. No where does this book claim to be for beginners. This book is for programmers who have developed competency in another language and want to learn Go. If you're unfamiliar with the basics of programming you will be lost reading this book.
I**S
The Goldilocks Go Book
This is the best book (out of 5) that I have read on Go. It's rare to find something in the computer science world that is as accessible and yet as accurate as this work. The examples are excellent and the explanations and instructions clear. Like the language itself it emphasizes clarity and simplicity and abstracts away the right parts, allowing for both accurate understanding and the avoidance of unnecessary complexity. It also provides the most solid grounding for getting more deeply involved in the more complex areas of the language, which it introduces on a gradient, without getting too thoroughly involved in them. I have a feeling that It would work reasonably well as a beginner's book, although you might want to make it the second book (or a follow up to the many free tutorials on-line) if you're brand new to programming. It could easily be a first Go book if you've produced even trivial programs in any other language. I highly recommend it to anyone who is not yet fully comfortable reading the language spec and standard library source code. And even if you are happy doing so, you're not going to be doing yourself any harm by reading this work.
T**M
Very well written with lots of interesting examples
Over the past years I've read many programming books. I must admin that this one really stands out! After completing the book you will have good understand of go language. However, note that this book will not cover all subject in depth so more advanced go programmers may not find this book very interesting. Examples are not trivial but rather interesting ones. Apart from letting you understand go better, they also give you interesting programming challenges, which could be used in other programming languages. I was really enjoying this book and highly recommend that book to any one who wants to start his adventure with go.
J**N
Clear exposition of the Language
A very clearly written book with good examples explaining the language, emphasizing the simplicity and utility of the language. Only thing would have liked is a second edition with Generics added !
A**U
Excelente
Excelente livro, traz explicacões claras sobre a linguagem. Não conhecia Go e tive de aprender para uso profissional, ajudou muito na curva de aprendizado.
V**K
Good introduction!
Good starting point! Recommend if you are starting with the language!
M**T
Référence pour le Go
J'adore ce livre de Go, il est très bien, je l'ai feuilleté pas en entier, mais il est très bien, il y a beaucoup d'exemples, le livre est joli et assez conséquent, c'est un bon achat si vous voulez apprendre le Go, c'est un peu la référence.
Trustpilot
4 days ago
1 month ago