Go Systems Programming
460 pages
English
PDF
4.5

Go Systems Programming

Go Systems Programming

Author:

Year:

Summary:

Introduction

The book «Go Systems Programming» (author — Mihalis Tsoukalos, 2017, 460 pages) is not just another guide to the Go language. It is a deep dive into the world of systems programming, aimed at developers who want to write efficient, reliable, and low-level utilities for UNIX-like operating systems. The author, known for his technical books and articles, offers a practical approach combining theory with numerous code examples.

What the book is about

The book covers a wide range of topics related to the interaction of a Go program with the operating system. The main focus is on Linux and macOS, but most examples are portable to other UNIX systems. You will learn how to work with file systems, processes, signals, network sockets, and how to create your own system utilities (for example, analogs of ps, ls, or netstat).

Who this book is for

The book is intended for programmers already familiar with the basics of Go (syntax, goroutines, channels). It will be useful for:

  • Developers transitioning from C/C++ to Go who want to maintain control over system resources;
  • DevOps engineers and administrators writing tools for monitoring and automation;
  • Anyone who wants to understand how Go interacts with the OS kernel at a low level.

What the reader will learn

After reading, you will be able to:

  • Work with file descriptors and system calls using the os and syscall packages;
  • Manage processes (creation, termination, waiting, signals);
  • Create multithreaded servers and clients using TCP/UDP sockets;
  • Write your own command-line utilities with argument and flag handling;
  • Work with time, timers, and synchronization at the OS level;
  • Use the os/exec package to run external programs;
  • Understand the structure of file systems and work with inodes, permissions, and links.

Strengths

The main advantage of the book is its practical focus. Each chapter contains numerous code listings that can be immediately run and modified. The author is not afraid to show the "dirty" details: error handling, working with binary data, and peculiarities of different OSes. The book is written in a lively style with examples from real-world experience. Special mention should be made of the chapters on network sockets and creating your own servers — they provide a solid foundation for writing high-load systems.

Who it is recommended for

I recommend this book to anyone who wants to go beyond web development in Go and learn to write system tools that are fast and reliable. It will be useful both for experienced developers and for those just starting to learn Go but who already have basic knowledge. If you want to understand how Go "communicates" with the Linux kernel — this book is for you.

Recommendations