Go Essentials
Golang Essentials for Backend Engineers
If you want a breadth-first view of the Go programming language ecosystem, this practical guide provides the essential background to write clear and idiomatic Go.
- Benefits of Go in Software Engineering
- Essential Resources for Writing Go Code
- Setting up Go Environment
- Constructs of Go Lang
- Functions in Go
- Stacks and Pointers in Go
- Go Custom Types, Methods, and Interfaces
- Error Handling in Go
- Essentials on Packaging Go Code
- Advanced Go Constructs
- Building an HTTP Server in Go
You can follow this guide to learn to Go fast, but that will demand that you are already a programmer. You are expected to follow this guide with a computer so you can practice and understand what you are learning easily.
Intermediate Golang for Backend Engineers
In this book, we will be exploring intermediate aspects of Golang. The book will suddenly take a practical turn, so prepare for the ride.
What you’ll be learning:
- Concurrent Programming in Go and Why it’s Important: Theoretically, in computer science, concurrency is the ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order without affecting the outcome. In easier terms, if you want your business logic to run faster than you hard-coded it, you must adopt concurrent programming. Let’s see this in practice.
- Working with Data in Go: Data manipulation is a fundamental aspect of software development, and Go provides powerful tools and libraries to work with various types of data. In this section, we will explore several essential data-related topics in Go:
- Advanced-Data Structures in Go: We saw Go maps, slices, and arrays in the Go Essentials course. Now, let’s leverage custom data structures functionality in Go.
-
Writing unit tests for Golang: The importance of writing tests for your software cannot be overemphasized. A school of thought called Test-Driven Development suggests that developers should start building software by writing code first. There are two approaches to writing tests:
- writing tests for a program to check whether the functions in it perform as expected
- writing tests during problem-solving to build software that passes the test.
-
Advanced Logging in Go: Logging plays a pivotal role in software engineering, providing insight into the inner workings of a program. It's an indispensable tool when building distributed systems, storage engines, message queues, version control systems, replication mechanisms, and consensus algorithms. In Golang, you have the built-in
log
package for basic logging needs. However, for more advanced and optimized logging, third-party packages like Logrus and Uber's Zap come to the rescue. In this article, we'll explore the importance of logging, the basic usage of Go's log package, and delve into structured logging with the slog package.
This intermediate-level book dives deeper into Golang's features and concepts, enabling readers to develop more complex and robust applications.
Advanced Golang for Backend Engineers
This book is designed to transform you into a true Golang expert, equipping you with the skills and knowledge to tackle intricate challenges and craft high-quality, performant code.
You have made it thus far into the world of Go for advanced programmers. Soon, you can write Go code to build real-world systems. In this course, you will learn about:
- Golang internals: In this chapter, we will embark on a journey to explore the core aspects of Go's language internals. We will delve into the Go compiler, the runtime system, garbage collection, assembly language, and techniques for profiling and optimizing Go code.
- Advanced concurrency patterns in Go: In this chapter, we'll explore some advanced concurrency patterns in Go, covering topics such as Goroutine patterns, atomic operations, memory models, high-performance concurrent systems, and distributed systems.
- Advanced packaging and dependency management: When building complex software, it is common to package the code with reusable modules inside the project that can be used everywhere. For example, you may build your logging package inside your project or use an existing one. Some software engineers believe it is more performant to avoid unnecessary dependencies in your project to reduce the overall size of your application. Let's explore how to package Go code.
- Building and deploying Go applications: This chapter will explore the process of building and deploying Go applications, covering different types of Go applications, their structure, containerization with Docker, deployment strategies, and Continuous Integration and Continuous Deployment (CI/CD) practices.
- Milestone Project: A Wallet Engine: In this milestone project, we will build a wallet engine using advanced Go concepts learned throughout this course. The wallet engine will be a practical example to demonstrate your understanding of Go's internal mechanisms, advanced concurrency patterns, packaging, dependency management, and deployment strategies.
This advanced volume is your gateway to joining the ranks of proficient Golang programmers who can wield the language's full power to create robust, efficient, and elegant solutions.
Practical examples, exercises, and a hands-on project will ensure that you build confidence and competence in intermediate Golang programming.
You can follow this guide to learn to Go fast.