Build systems with Go

Why this book?

Years have passed by and Go is no longer the new kid on the block, it has already become a mature language surrounded by a rich ecosystem of libraries, projects, and tools. Talking about Go is no longer talking about that fancy language that makes your life easier. Go is the gravity centre of a continuously growing ecosystem of amazing solutions maintained by a devoted community of developers.

Go was originally designed to simplify the building of complex systems. However, when a developer decides to learn Go most of the learning resources simply explain the language. This book goes one step further by exploring tools, libraries, and projects from the Go ecosystem you can use to build ready-for-production systems. Everything a gopher must know in a single book.

Who sould read this book?

This book is oriented to new Go adopters and developers with programming experience in other languages. The first part of this book covers the Go language from its basics to more advanced concepts. The second part explores libraries, projects and tools from the Go ecosystem to build awesome systems. If you are new to Go you can start from the very beginning. However, if you have some experience you can start with the second part and revisit any basic concept if needed. Or you can simply go and check those chapters you find the most relevant.

Structure of this book

This book is structured to easily find those pieces you find more interesting for your work. However, if you are an absolute beginner or you do not feel very comfortable with all the concepts explained in this book you can always start from the beginning. Whatever your use case is, these are the contents of every Chapter.

  • Part I: The Go language
    • First steps with Go
    • The basics
    • Arrays, slices, and maps
    • Structs, methods, and interfaces
    • Reflection
    • Concurrency
    • Input/Output
    • Encodings
    • HTTP
    • Templates
    • Testing
    • Modules and documentation
    • Cgo
  • Part II: Building systems
    • Protocol buffers
    • gRPC
    • Logging with Zerolog
    • Command Line Interface
    • Relational databases
    • NoSQL databases
    • Kafka

The code

The book contains more than 200 executable examples with their expected outputs to help the reader to understanding the explained concepts. All the code is available at the GitHub repository under Apache License:

https://github.com/juanmanuel-tirado/savetheworldwithgo

Feel free to fork the repository at your convenience. If you find any issue or have any comment regarding the code, please let the author know.

Where can I find the book?

You can purchase the book at Amazon in paperback or ebook formats here