Are you about to start a new exciting career with Go programming language? You found the right book to help you to learn Go!

Why Go Programming Language?

There are many programming languages in use today with different feature sets. You should pick the right programming language for the problem at hand. Some languages are more suitable for specific problems.

If you are looking for a simple and powerful general-purpose programming language, Go would be a great choice.

Salient Features & Facts

Compiled



Statically typed



Garbage collected



Built-in concurrency



Very fast compilation



No classes



25 keywords





Go, also commonly referred to as Golang, is a general-purpose programming language. Go was initially developed at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. Go was publicly released as a free/open source software in November 2009 by Google. Go is used by many organizations in different problem domains.

Why this Book?

This book is a comprehensive guide to the Go programming language. If you are new to programming, this book is going to be useful for you.

Book Features



Easy to follow examples.



Exercise at the end of chapters.



Additional exercises with the solution at the end of the book.



Cover all the major feature of Go.



Side notes about related topics







Table of Contents

1. Introduction

Preparations -- Organizing Code -- Organization of Chapters -- Suggestions to Use This Book

2. Quickstart

Hello World! -- Building and Running Programs -- The Example Explained -- Basics -- Exercises

3. Control Structures

If -- For -- Switch Cases -- Defer Statements -- Deferred Panic Recover -- Goto -- Exercises

4. Data Structures

Primitive Data Types -- Constants -- Arrays -- Slices -- Maps -- Custom Data Types -- Pointers -- Exercises

5. Functions & Structs

Parameters -- Return Values -- Variadic Functions -- Anonymous Functions -- Function as Value -- Methods -- Exercises

6. Interfaces

Type with Multiple Interfaces -- Empty Interface -- Pointer Receiver -- Type Assertions -- Type Switches -- Exercises

7. Concurrency

Goroutine -- Channels -- Waitgroups -- Select -- Buffered Channels-- Channel Direction -- Lazy Initialization Using sync -- Exercises

8. Packages

Creating a Package -- Package Initialization -- Documenting Packages -- Publishing Packages -- Module -- Moving Type Across Packages -- Exercises

9. Input/Output

Command Line Arguments -- Interactive Input-- Using flag Package -- String Formatting -- Exercises

10. Testing

Failing a Test -- Logging Message -- Failing with Log Message -- Skipping Test -- Parallel Running -- Exercises

11. Tooling

Getting Help -- Basic Information -- Building and Running-- Running Test -- Formatting Code-- Displaying Documentation -- Find Suspicious Code Using Vet -- Exercises

Appendix A: Answers

Appendix B: Vim Configuration

Further Readings





About the Author

Baiju Muthukadan is a software engineer based in Bangalore, India. He started his software development career in 2002. His first job was at FSF India. Baiju has contributed to many free/open source software over the last so many years. He wrote his first book related to Python in 2007. Since 2013 he is working on various Go projects. Baiju has been conducting Go related workshops since 2016. Twitter: @baijum