The Ultimate List 26 Best Go Programming Books You Should Read Now

Learning Go

Learning Go

An Idiomatic Approach to Real-World Go Programming

By Jon Bodner · 2021

Go is rapidly becoming the preferred language for building web services. While there are plenty of tutorials available that teach Go's syntax to developers with experience in other programming languages, tutorials aren't enough. They don't teach Go's idioms, so developers end up recreating patterns that don't make sense in a Go context. This practical guide provides the essential background you need to write clear and idiomatic Go.

No matter your level of experience, you'll learn how to think like a Go developer. Author Jon Bodner introduces the design patterns experienced Go developers have adopted and explores the rationale for using them. You'll also get a preview of Go's upcoming generics support and how it fits into the language. Learn how to write idiomatic code in Go and design a Go project. Understand the reasons for the design decisions in Go. Set up a Go development environment for a solo developer or team. Learn how and when to use reflection, unsafe, and cgo. Discover how Go's features allow the language to run efficiently. Know which Go features you should use sparingly or not at all.

Show more
Pro Go

Pro Go

The Complete Guide to Programming Reliable and Efficient Software Using Golang

By Adam Freeman · 2022

Best-selling author Adam Freeman explains how to get the most from Go, starting from the basics and building up to the most advanced and sophisticated features. You will learn how Go builds on a simple and consistent type system to create a comprehensive and productive development experience that produces fast and robust applications that run across platforms.

Go, also known as Golang, is the concise and efficient programming language designed by Google for creating high-performance, cross-platform applications. Go combines strong static types with simple syntax and a comprehensive standard library to increase programmer productivity, while still supporting features such as concurrent/parallel programming.

Each topic is covered in a clear, concise, no-nonsense approach that is packed with the details you need to learn to be truly effective. Chapters include common problems and how to avoid them.

Show more
Introducing Go

Introducing Go

Build Reliable, Scalable Programs

By Caleb Doxsey · 2016

Perfect for beginners familiar with programming basics, this hands-on guide provides an easy introduction to Go, the general-purpose programming language from Google. Author Caleb Doxsey covers the language's core features with step-by-step instructions and exercises in each chapter to help you practice what you learn.

Go is a general-purpose programming language with a clean syntax and advanced features, including concurrency. This book provides the one-on-one support you need to get started with the language, with short, easily digestible chapters that build on one another. By the time you finish this book, not only will you be able to write real Go programs, you'll be ready to tackle advanced techniques.

Show more
Mastering Go

Mastering Go 2nd. Edition

Create Golang production applications using network libraries, concurrency, machine learning, and advanced data structures

By Mihalis Tsoukalos · 2019

Second edition of the bestselling guide to advanced Go programming, expanded to cover machine learning, more Go packages and a range of modern development techniques.

Completes the Go developer's education with real-world guides to building high-performance production systems. Packed with practical examples and patterns to apply to your own development work Clearly explains Go nuances and features to remove the frustration from Go development.

Show more
Practical Go

Practical Go

Building Scalable Network & Non-Network Applications

By Amit Saha · 2021

Your practical, hands-on guide to writing applications using Go. In Practical Go - Building Scalable Network & Non-Network Applications, you will learn to use the Go programming language to build robust, production-ready software applications.

You'll learn to implement best practices using hands-on examples written with modern practices in mind. With its focus on using the standard library packages as far as possible, Practical Go will give you a solid foundation for developing large applications using Go leveraging the best of the language's ecosystem.

Show more
Head First Go

Head First Go

A Brain Friendly Guide

By Jay McGavren · 2019

Go makes it easy to build software that's simple, reliable, and efficient. And this book makes it easy for programmers like you to get started. Google designed Go for high-performance networking and multiprocessing, but like Python and JavaScript the language is easy to read and use.

Based on the latest research in cognitive science and learning theory, HeadFirst Go uses a visually rich format to engage your mind rather than a text heavy approach that puts you to sleep. Why waste your time struggling with new concepts? This multi-sensory learning experience is designed for the way your brain really works.

Show more
Go Programming Blueprints

Go Programming Blueprints

Build real-world production ready solutions in Go using cutting-edge technology and techniques

By Mat Ryer · 2015

Intended for seasoned Go programmers who want to put their expertise in Go to use to solve big, real-world, modern problems. With a basic understanding of channels and goroutines, you will hone your skills to build tools and programs that are quick and simple.

You need not be an expert in distributed systems or technologies in order to deliver solutions capable of great scale. It is assumed that you are familiar with the basic concepts of Go.

Show more
Concurrency in Go

Concurrency in Go

Tools and Techniques for Developers

By Katherine Cox-Buday · 2017

Concurrency can be notoriously difficult to get right, but fortunately, the Go open source programming language makes working with concurrency tractable and even easy. If you're a developer familiar with Go, this practical book demonstrates best practices and patterns to help you incorporate concurrency into your systems.

Author Katherine Cox-Buday takes you step-by-step through the process. You'll understand how Go chooses to model concurrency, what issues arise from this model, and how you can compose primitives within this model to solve problems. Learn the skills and tooling you need to confidently write and implement concurrent systems of any size.

Show more
Go Programming Cookbook

Go Programming Cookbook

Over 85 recipes to build modular, readable, and testable Golang applications across various domains

By Aaron Torres · 2019

Tackle the trickiest of problems in Go programming with this practical guide.

Develop applications for different domains using modern programming techniques. Tackle common problems when it comes to parallelism, concurrency, and reactive programming in Go. Work with ready-to-execute code based on the latest version of Go.

Show more
The Go Workshop

The Go Workshop

Learn to Write Clean, Efficient Code and Build High Performance Applications With Go

By Delio D'Anna, Andrew Hayes, Sam Hennessy, Jeremy Leasor, Gobin Sougrakpam, Daniel Szabo · 2019

Get started with Go and learn how to leverage its simplicity and flexibility to solve real-world problems and build practical software.

Build a comprehensive foundation in Go and focus on developing real-world applications. Explore the Go Standard Library and learn how to structure your code. Learn how to efficiently interact with files, databases and REST APIs.

The Go Workshop will take the pain out of learning the Go programming language (also known as Golang). It is designed to teach you to be productive in building real-world software. Presented in an engaging, hands-on way, this book focuses on the features of Go that are used by professionals in their everyday work.

Each concept is broken down, clearly explained, and followed up with activities to test your knowledge and build your practical skills.

Show more
Cloud Native Go

Cloud Native Go

Building Reliable Services in Unreliable Environments

By Matthew A. Titmus · 2021

What do Docker, Kubernetes, and Prometheus have in common? All of these cloud native technologies are written in the Go programming language. This practical book shows you how to use Go's strengths to develop cloud native services that are scalable and resilient, even in an unpredictable environment. You'll explore the composition and construction of these applications, from lower-level features of Go to mid-level design patterns to high-level architectural considerations.

Each chapter builds on the lessons of the last, walking intermediate to advanced developers through Go to construct a simple but fully featured distributed key-value store. You'll learn best practices for adopting Go as your development language for solving cloud native management and deployment issues.

Show more
Go in Practice

Go in Practice

Includes 70 Techniques

By Matt Farina, Matt Butcher · 2016

Go in Practice guides you through 70 real-world techniques in key areas like package management, microservice communication, and more. Following a cookbook-style Problem/Solution/Discussion format, this practical handbook builds on the foundational concepts of the Go language and introduces specific strategies you can use in your day-to-day applications.

Go in Practice guides you through dozens of real-world techniques in key areas. Following a cookbook-style Problem/Solution/Discussion format, this practical handbook builds on the foundational concepts of the Go language and introduces specific strategies you can use in your day-to-day applications. You'll learn techniques for building web services, using Go in the cloud, testing and debugging, routing, network applications, and much more. After finishing this book, you will be ready to build sophisticated cloud-native Go applications.

Show more
Distributed Services with Go

Distributed Services with Go

Your Guide to Scalable, Reliable, Maintainable Systems

By Travis Jeffery · 2021

This is the book for Gophers who want to learn how to build distributed systems. You know the basics of Go and are eager to put your knowledge to work. Build distributed services that are highly available, resilient, and scalable. This book is just what you need to apply Go to real-world situations. Level up your engineering skills today.

Take your Go skills to the next level by learning how to design, develop, and deploy a distributed service. Start from the bare essentials of storage handling, then work your way through networking a client and server, and finally to distributing server instances, deployment, and testing. All this will make coding in your day job or side projects easier, faster, and more fun.

Show more
Network Programming with Go

Network Programming with Go

Code Secure and Reliable Network Services from Scratch

By Adam Woodbeck · 2021

Network Programming with Go teaches you how to write clean, secure network software with the programming language designed to make it seem easy.

Network Programming with Go will help you leverage Go to write secure, readable, production-ready network code. In the early chapters, you'll learn the basics of networking and traffic routing. Then you'll put that knowledge to use as the book guides you through writing programs that communicate using TCP, UDP, and Unix sockets to ensure reliable data transmission.

As you progress, you'll explore higher-level network protocols like HTTP and HTTP/2 and build applications that securely interact with servers, clients, and APIs over a network using TLS.

Show more
Go Programming Language

Go Programming Language

Authoritative resource for any programmer who wants to learn Go

By Alan A. A. Donovan, Brian W. Kernighan · 2015

The Go Programming Language is the authoritative resource for any programmer who wants to learn Go. It shows how to write clear and idiomatic Go to solve real-world problems. The book does not assume prior knowledge of Go nor experience with any specific language, so you'll find it accessible whether you're most comfortable with JavaScript, Ruby, Python, Java, or C++.

The first chapter is a tutorial on the basic concepts of Go, introduced through programs for file I/O and text processing, simple graphics, and web clients and servers. Early chapters cover the structural elements of Go programs: syntax, control flow, data types, and the organization of a program into packages, files, and functions. The examples illustrate many packages from the standard library and show how to create new ones of your own. Later chapters explain the package mechanism in more detail, and how to build, test, and maintain projects using the go tool. The chapters on methods and interfaces introduce Go's unconventional approach to object-oriented programming, in which methods can be declared on any type and interfaces are implicitly satisfied. They explain the key principles of encapsulation, composition, and substitutability using realistic examples.

Show more
Building Microservices with Go

Building Microservices with Go

Your one-stop guide to common microservices patterns and practices, showing you how to apply these using the Go programming language

By Nic Jackson · 2017

This short, concise, and practical guide is packed with real-world examples of building microservices with Go. It is easy to read and will benefit smaller teams who want to extend the functionality of their existing systems. Using this practical approach will save your money in terms of maintaining a monolithic architecture and demonstrate capabilities in ease of use.

Microservice architecture is sweeping the world as the de facto pattern to build web-based applications. Golang is a language particularly well suited to building them. Its strong community, encouragement of idiomatic style, and statically-linked binary artifacts make integrating it with other technologies and managing microservices at scale consistent and intuitive. This book will teach you the common patterns and practices, showing you how to apply these using the Go programming language.

Show more
Go for Java Programmers

Go for Java Programmers

Learn the Google Go Programming Language

By Feigenbaum, Ph.D., Barry · 2021

Get an in-depth introduction to the Go programming language and its associated standard runtime libraries. This book is targeted towards programmers that already know the Java programming language and uses that Java knowledge to direct the learning of Go. You will get a deep understanding of the Go language and obtain a good introduction to the extensive Go standard libraries.

This book teaches Go through clear descriptions of Go features, contrasting them with similar Java features and via providing extensive code examples. After reading this book you will be knowledgeable enough about Go and its libraries to begin doing effective programming using the Go language.

Go for Java Programmers is structured more like a tutorial than a reference document. It covers key features of Go, but not every little detail as a reference might. Its goal is to get you competent enough in Go and its runtime that you can begin to effectively write Go programs.

Show more
Go Programming Blueprints : 2nd Edition

Go Programming Blueprints : 2nd Edition

Build real-world, production-ready solutions in Go using cutting-edge technology and techniques

By Mat Ryer · 2016

Get up to date with Go and write code capable of delivering massive world-class scale performance and availability. Learn to apply the nuances of the Go language, and get to know the open source community that surrounds it to implement a wide range of start-up quality projects.

Build quirky and fun projects from scratch while exploring patterns, practices, and techniques, as well as a range of different technologies Create websites and data services capable of massive scale using Go's net/http package, exploring RESTful patterns as well as low-latency WebSocket APIs. Interact with a variety of remote web services to consume capabilities ranging from authentication and authorization to a fully functioning thesaurus. Develop high-quality command-line tools that utilize the powerful shell capabilities and perform well using Go's in-built concurrency mechanisms. Build microservices for larger organizations using the Go Kit library. Implement a modern document database as well as high-throughput messaging queue technology to put together an architecture that is truly ready to scale. Write concurrent programs and gracefully manage the execution of them and communication by smartly using channels.

Show more
Learning Functional Programming in Go

Learning Functional Programming in Go

Change the way you approach your applications using functional programming in Go

By Lex Sheehan · 2017

Function literals, Monads, Lazy evaluation, Currying, and more. This book is for Golang developers comfortable with OOP and interested in learning how to apply the functional paradigm to create robust and testable apps.

Prior programming experience with Go would be helpful, but is not mandatory. Learn how to compose reliable applications using high-order functions Explore techniques to eliminate side-effects using FP techniques such as currying.

Show more
Hands-On Dependency Injection in Go

Hands-On Dependency Injection in Go

Develop clean Go code that is easier to read, maintain, and test

By Corey Scott · 2018

Explore various dependency injection methods in Go such as monkey patching, constructor injection, and method injection.

Hands-On Dependency Injection in Go takes you on a journey, teaching you about refactoring existing code to adopt dependency injection (DI) using various methods available in Go.

Of the six methods introduced in this book, some are conventional, such as constructor or method injection, and some unconventional, such as just-in-time or config injection. Each method is explained in detail, focusing on their strengths and weaknesses, and is followed with a step-by-step example of how to apply it. With plenty of examples, you will learn how to leverage DI to transform code into something simple and flexible. You will also discover how to generate and leverage the dependency graph to spot and eliminate issues. Throughout the book, you will learn to leverage DI in combination with test stubs and mocks to test otherwise tricky or impossible scenarios.

Hands-On Dependency Injection in Go takes a pragmatic approach and focuses heavily on the code, user experience, and how to achieve long-term benefits through incremental changes.

Show more
Hands-On High Performance with Go

Hands-On High Performance with Go

Boost and optimize the performance of your Golang applications at scale with resilience

By Bob Strecansky · 2020

Proven methodologies and concurrency techniques that will help you write faster and better code with Go programming.

Explore Go's profiling tools to write faster programs by identifying and fixing bottlenecks. Address Go-specific performance issues such as memory allocation and garbage collection. Delve into the subtleties of concurrency and discover how to successfully implement it in everyday applications.

Show more
Powerful Command-Line Applications in Go

Powerful Command-Line Applications in Go

Build Fast and Maintainable Tools

By Ricardo Gerardi · 2021

Whether you want to automate tasks, analyze data, parse logs, talk to network services, or address other systems requirements, writing your own command-line tool may be the fastest - and perhaps the most fun - way to do it.

The Go programming language is a great choice for developing tools that are fast, reliable, and cross-platform. Create command-line tools that work with files, connect to services, and even manage external processes, all while using tests and benchmarks to ensure your programs are fast and correct.

Show more
Hands-On System Programming with Go

Hands-On System Programming with Go

Build modern and concurrent applications for Unix and Linux systems using Golang

By Alex Guerrieri · 2019

Explore the fundamentals of systems programming with Go starting from kernel API and filesystem to network programming and process communications.

Learn how to write Unix and Linux system code in Golang v1.12. Perform inter-process communication using pipes, message queues, shared memory, and semaphores. Explore modern Go features such as goroutines and channels that facilitate systems programming.

Show more
Go in 24 Hours

Go in 24 Hours

Next Generation Systems Programming with Golang

By George Ornbo · 2017

In just 24 sessions of one hour or less, Sams Teach Yourself Go in 24 Hours will help new and experienced programmers build software that's simpler, more reliable, and far more scalable.

This book's straightforward, step-by-step approach guides you from setting up your environment through testing and deploying powerful solutions. Using practical examples, expert Go developer George Ornbo walks you through Go's fundamental constructs, demonstrates its breakthrough features for concurrent and network programming, and illuminates Go's powerful new idioms. Every lesson builds on what you've already learned, giving you a rock-solid foundation for real-world success.

Show more
Hands-On GUI Application Development in Go

Hands-On GUI Application Development in Go

Build responsive, cross-platform, graphical applications with the Go programming language

By Andrew Williams · 2019

Discover Golang's GUI libraries such as Go-GTK (GIMP Toolkit) and Go-Qt and build beautiful, performant, and responsive graphical applications.

Conceptualize and build state-of-art GUI applications with Golang (Go). Tackle the complexity of varying GUI application sizes with a structured and scalable approach. Get hands-on experience of GUI development with Shiny, and labs/ui, Fyne, and Walk.

This guide to programming GUIs with Go 1.11 explores the various toolkits available, including UI, Walk, Shiny, and Fyne. The book compares the vision behind each project to help you pick the right approach for your project. Each framework is described in detail, outlining how you can build performant applications that users will love. To aid you further in creating applications using these emerging technologies, you'll be able to easily refer to code samples and screenshots featured in the book. In addition to toolkit-specific discussions, you'll cover more complex topics, such as how to structure growing graphical applications, and how cross-platform applications can integrate with each desktop operating system to create a seamless user experience. By delving into techniques and best practices for organizing and scaling Go-based graphical applications, you'll also glimpse Go's impressive concurrency system.

Show more
Machine Learning with Go Quick Start Guide

Machine Learning with Go Quick Start Guide

Hands-on techniques for building supervised and unsupervised machine learning workflows

By Michael Bironneau, Toby Coleman · 2019

This quick start guide will bring the readers to a basic level of understanding when it comes to the Machine Learning (ML) development lifecycle, will introduce Go ML libraries and then will exemplify common ML methods such as Classification, Regression, and Clustering Key Features Your handy guide to building machine learning workflows in Go for real-world scenarios.

Machine learning is an essential part of today's data-driven world and is extensively used across industries, including financial forecasting, robotics, and web technology. This book will teach you how to efficiently develop machine learning applications in Go.

The book starts with an introduction to machine learning and its development process, explaining the types of problems that it aims to solve and the solutions it offers. It then covers setting up a frictionless Go development environment, including running Go interactively with Jupyter notebooks. Finally, common data processing techniques are introduced.

The book then teaches the reader about supervised and unsupervised learning techniques through worked examples that include the implementation of evaluation metrics. These worked examples make use of the prominent open-source libraries GoML and Gonum.

Show more