Go also known as Golang, is an open-source, compiled, and statically typed programming language designed by Google. It focused on simplicity, reliability, and efficiency. This roadmap would help you as a developer to get started on learning about Go programming language.
To make your journey easier, pick a path
Basic Syntax
Mark as done
Done
Basic Syntax
Begin this roadmap section by learning the basic syntax for Go with the resources below.
Go Syntax Basic Tutorial
Introduction to Golang Programming
Learn Basic Golang Programming Language
Go Syntax optional
Conditionals
Mark as done
Done
Conditionals
Learn about conditionals in Golang, and the type of conditional statements you will find. See the resources below.
How To Write Conditional Statements in Go
Conditional Statements in Golang
How To Use If and Switch Statement in Golang optional
Combining Conditional Statements in Golang
Variables and declarations
Mark as done
Done
Variables and declarations
Variables are labels given to the values in Golang to store them. In Golang, a Declaration names a program entity and specifies some or all of its properties. Learn more about these from the resources below.
Variables in Go
Variables in Golang with Examples
Golang Variable Declarations
Switch Statement
Mark as done
Done
Switch Statement
In Golang, the switch statement lets you check multiple cases. Learn more about this from the resources below.
Switch Statement in Golang
Golang Tutorial - Switch Statement
How to Write Switch Statement in Go
Packages, Import and Export
Mark as done
Done
Packages, Import and Export
A package is a collection of source files in the same directory that are compiled together. Learn more about this including the import and export declarations of packages in Golang from the resources below.
A Beginner's Guide to Packages in Go
How to Write Packages in Go
Golang Import Tutorial
Export in Golang
Functions
Mark as done
Done
Functions
A function is a group of statements that exist within a program for the purpose of performing a specific task. Learn more about this from the resources below.
Working with functions in Go
Go Functions with Examples
Golang Tutorials - Functions
Functions in Go optional
Struct
Mark as done
Done
Struct
In Golang, a struct (short for "structure") is a collection of data fields with declared data types. Learn more about this from the resources below.
Go Struct - Working with Structures in Go
Structs in Golang
Go by Examples: Struct
Structs optional
Type Casting/Type conversion
Mark as done
Done
Type Casting/Type conversion
Type Casting also referred to as Type Conversion happens when the variable of one data type is converted to another data type. Learn more about this from the resources below.
Type casting in Go
Golang Tutorial for Beginners - Type Conversion
Go Type Casting with Examples
Type Inference
Mark as done
Done
Type Inference
Type inference is the ability of programming languages (in this case, Golang) to interpret expression data types automatically at compile time. Learn more about this from the resources below.
Type Inference
Type Inference for Go
Data Types
Mark as done
Done
Data Types
In Golang, data types refer to an extensive system used for declaring variables or functions of different types. Learn more about this from the resources below.
Go Data Types with Example
Understanding Data Types in Go
Types - An Introduction to Programming in Go optional
Go Data Types Tutorial optional
For Loop
Mark as done
Done
For Loop
For loop in Golang can be defined as a repetition control structure. Learn more about this from the resources below.
Loops in Go Programming Language
Go For Loops with Examples
Creating Loops in Golang with For Statement
Getting Started with For Loop in Go
Range
Mark as done
Done
Range
Range can be described as a process in Golang that iterates over elements in various data structures. Learn more about this from the resources below.
Go Range - Iterating over Data Structures in Go
Range - Golang Programming Tutorial
What is the for Range Loop in Go?
Go Range by Examples optional
Array
Mark as done
Done
Array
In Golang, an array is a collection of elements of a specific size and type. Learn more about this from the resources below.
Working with Array in Golang
Go Array with Examples
Array in Golang
Golang Tutorial: Array and Slices optional
Slice
Mark as done
Done
Slice
A slice is a flexible and extensible data structure to implement and manage collections of data. Learn more about this from the resources below.
Golang Tutorial: Slices
Go Slices
Slices in Golang
Maps
Mark as done
Done
Maps
Golang map is an in-built unordered collection that allows us to store elements in key/values pairs. Learn more about this from the resources below.
Go Map with Examples
Working with maps in Go
Maps are super easy in Go
Go Maps in Action
Errors, Panic, Recover
Mark as done
Done
Errors, Panic, Recover
Errors in Go are plain old values. Panic is a function that prematurely terminates a Go application when an abnormal condition is encountered. Recover is a function provided by Go which takes control of a panicking goroutine. Learn more about these concepts from the resources below.
Panic and Recovery: Golang Tutorial
Golang Panic and Recover Tutorial with Example
Handling Panics in Go
Error, Panic and Recovery in Go
How To Handle Errors in Go
Basic SQL Syntax
Mark as done
Done
Basic SQL Syntax
Get the basic SQL Fundamentals and Syntax. See the resources below.
SQL Syntax
Basic SQL Commands
SQL Syntax Basics
Goroutines
Mark as done
Done
Goroutines
A goroutine is a lightweight thread managed by the Go runtime. Learn more about this concept from the resources below.
Goroutines
Goroutines - Concurrency in Golang
Concurrency and Goroutines in Golang
Concurrency with Golang Goroutines
Type Assertion
Mark as done
Done
Type Assertion
Type assertions in Golang provide access to the exact type of variable of an interface. Learn more about this from the resources below.
Type Assertions in Golang
Understanding Type Assertion in Go
Golang Programming Tutorial - Type Assertion
Channel
Mark as done
Done
Channel
Channels can be described as goroutine conduits. They are the pipeline through which goroutines can communicate with each other. Learn more about this concept from the resources below.
Channel in Go
What is Channel in Golang?
Go by Examples: Channel optional
How to use Go Channel
Context
Mark as done
Done
Context
Context in a program is the ability to access data stored inside a context. Learn more about this concept from the resources below.
Go Context Tutorial
Getting Started with Go Context
Tutorial on Go Context
It's Time to Understand Go Context
Interface
Mark as done
Done
Interface
In Golang, an interface type is defined as a set of method signatures. Learn more about this concept from the resources below.
Interfaces in Golang
How to user interface in Go
Working with Interfaces in Go
Interface optional
Buffer
Mark as done
Done
Buffer
The buffer belongs to the byte package of the Go language and can be used to manipulate the byte of the string. Learn more about this concept from the resources below.
How Does a Buffer Work in Go
Golang Buffer Examples
Golang lock/Mutex
Mark as done
Done
Golang lock/Mutex
A lock, or mutex, in Golang, is a synchronization technique and an important concurrent programming concept. Learn more about this concept from the resources below.
Go Mutex Tutorial
Understanding Golang Mutex
Golang Lock/Mutex Tutorial
Mutex in Golang optional
Select
Mark as done
Done
Select
The select statement lets a goroutine wait on multiple communication operations. Learn more about this concept from the resources below.
How Select Statement Work in Go
Select Statement in Go
Go by Example: Select Statement
Select Statement Tutorial optional
Marshalling and Unmarshalling JSON
Mark as done
Done
Marshalling and Unmarshalling JSON
Marshalling is the process of converting the Golang object to JSON encoding, which is then converted into strings. Unmarshalling is the process of converting JSON byte data to a Go datatype. Learn more about these concepts from the resources below.
What is JSON Marshalling and Unmarshalling?
How to Marshal and Unmarshall JSON
Marshalling and Unmarshalling in Golang
JSON Marshall and Unmarshall Golang optional
Go Modules
Mark as done
Done
Go Modules
A module is a collection of Go packages stored in a file tree with a go.mod file at its root. Learn more about this concept from the resources below.
Working with Modules in Golang
Getting Started with Go Modules optional
How to use Go Modules
Go Modules Tutorial optional
Building CLIs using urfave/cli
Mark as done
Done
Building CLIs using urfave/cli
In this section, you will find a handful of resources that show you how to build Command Line Interfaces using urfave/cli. See the resources below
Building a cli using urfave cli
A simple, fast and fun package for building command apps in Go
Building CLIs with Cobra
Mark as done
Done
Building CLIs with Cobra
In this section, you will find a handful of resources that show you how to build Command Line Interfaces using Cobra. Cobra-cli is a command line program to generate cobra applications and command files. See the resources below.
How to Create CLI in Golang with Cobra
How to use Cobra in Golang
Building a CLI Application using Golang and Cobra Library
How to build a Command Line Application with Go
GORM
Mark as done
Done
GORM
GORM is an ORM library for dealing with relational databases in Golang. Learn more about this from the resources below.
GORM Library
Golang ORM Tutorial
Gorilla
Mark as done
Done
Gorilla
Gorilla is a web toolkit for the Go programming language. Learn more about this from the resources below.
Gorilla Web ToolKit
Building and Testing REST API with Gorilla in Go
Creating a Web App using Gorilla in Go
Fiber
Mark as done
Done
Fiber
Fiber is a Go web framework built on top of Fasthttp, the fastest HTTP engine for Go. Learn more about this framework from the resources below.
Fiber Official webpage
How can the Fiber Web Framework be useful
Go Fiber Tutorial
Building an Express-style API with Fiber in Go
Echo
Mark as done
Done
Echo
Echo is a high performance, extensible, minimalist web framework for Go (Golang). Learn more about this framework from the resources below.
Echo Web Framework
Build a simple API with Golang Echo Framework
Go and Echo Starter optional
Buffalo
Mark as done
Done
Buffalo
Buffalo is a web application development environment for Golang. Learn more about this environment from the resources below.
Buffalo Web Framework
An Intro to Buffalo Web Framework
Buffalo Bootcamp
Revel
Mark as done
Done
Revel
Revel is a self-sufficient, flexible and high-productivity web framework for the Go language. Learn more about this framework from the resources below.
Introduction to Golang Web Framework - Revel
Go Revel Tutorial
Revel: A Go Website Application Framework
Gin
Mark as done
Done
Gin
Gin is a high-performance web framework written in Golang. Learn more about this framework from the resources below.
What is Gin in Golang?
Go Gin Web Framework
Golang Gin Framework Examples
Beego
Mark as done
Done
Beego
Beego is an open-source, high-performance web framework mostly used to build enterprise web applications with rapid development. Learn more about this framework from the resources below.
Beego Web Framework
Golang Beego Tutorial: A Quick Start
Beego Setup and Installation optional
Zap
Mark as done
Done
Zap
Zap is an open-source logging framework. Learn more about this framework from the resources below.
Zap
Using Zap Log Library in Go
Golang Code Clube: Zap Log Library
Golang Logger Examples optional
Logrus
Mark as done
Done
Logrus
Logrus is a structured logger for Golang. It is completely API compatible with the standard library logger. Learn more about this from the resources below.
Logrus
Logging in Go Using Logrus Package
How to Handle Loggin in Go with Logrus
Melody
Mark as done
Done
Melody
Melody is a websocket framework that abstracts away the tedious parts of handling websockets. Learn more about this framework from the github resource below.
Melody
Centrifugo
Mark as done
Done
Centrifugo
Centrifugo is a real-time messaging library for the Go language. Learn more about this from the github resource below.
Centrifugo
REST
Mark as done
Done
REST
REST stands for Representational State Transfer. It is a way clients connect to servers to get data. Learn more about this from the resources below.
Build your first REST API with Go
Go REST API Examples
Go For Beginners: Build a REST API
How to Build a REST API with Golang optional
Heimdall
Mark as done
Done
Heimdall
Heimdall is an HTTP client that helps your application make a large number of requests, at scale. Learn more about this from the github resource below.
Heimdall
GRequests
Mark as done
Done
GRequests
GRequests is a Go "clone" of the great and famous Requests library. Learn more about this from the resources below.
GRequests - Github
How to make GET Request in Golang
GraphQL
Mark as done
Done
GraphQL
GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. Learn more about this from the resources below.
GraphQL Official Website optional
An Introduction to GraphQL in Go
What is GraphQL? Definitions with Examples
Introduction to GraphQL
GraphQL Best Practices
gqlgen
Mark as done
Done
gqlgen
gqlgen is a Go library for building GraphQL servers. Learn more about this from the resources below.
gqlgen - Building GraphQL Servers in Go
Set Up for GQLGEN
Building a GraphQL API in Go using gqlgen
GQLGEN Tutorial
Go Kit
Mark as done
Done
Go Kit
Go kit is a collection of Golang packages that help build robust, reliable, maintainable microservices. Learn more about this from the resources below.
Go Kit - A Standard Library for Web Microservice
Building Microservices with Go Kit
Microservices in Go using the Go Kit
Go gRPC
Mark as done
Done
Go gRPC
Go gRPC is the implementation of the modern, open source Remote Procedure Call (RPC) framework in Golang. Learn more about this from the resources below.
Go gRPC for Beginners
Build simple gRPC server with Go
Basic Tutorial - gRPC
Golang gRPC - Persist User Data
Twirp
Mark as done
Done
Twirp
Twirp is a framework for service-to-service communication. Learn more about this from the resources below.
Meet Twirp - Github
Golang, Microservices and Twirp
Simple and Ready RPC in Golang with Twirp
go-zero
Mark as done
Done
go-zero
go-zero is a web and rpc framework that integrates lots of engineering practices. Learn more about this from the github resource below.
go-zero
Watermill
Mark as done
Done
Watermill
Watermill is a Golang library for working efficiently with message streams. Learn more about this library from the resources below.
Watermill
Introducing Watermill: Go Event-Driven Application Library
Micro
Mark as done
Done
Micro
Micro is a microservices development framework for Golang. Learn more about this from the resources below.
Microservice in Go using Micro
Micro
Go Micro vs Micro - What are the Difference
Protocol Buffer
Mark as done
Done
Protocol Buffer
A protocol buffer (or Protobuf) is a file, which when compiled, will generate a file accessible to the targeted programming language. Learn more about this from the resources below.
Getting Started with Protocol Buffers in Go
Protocol Buffers and GRPC in Go
Golang Protocol Buffer Tutorial
Protocol Buffer with Golang optional
BDD
Mark as done
Done
BDD
In this section, you will learn about Behavior Driven Development testing for Golang. See the resources below.
BDD Testing Framework for Go
Implementation of BDD using Go
Feature Test with Godog 9BDD) in Golang
Demonstrating BDD in Go
Unit Testing
Mark as done
Done
Unit Testing
In this section, you will learn about Unit Testing for Golang. See the resources below.
How to write unit test in Go
A deep dive into unit testing in go
Getting started with unit testing in go
Unit testing in Go: Basic Intro
Test Your Skills
Mark as done
Done
Test Your Skills
There is no better way to consolidate your knowledge besides testing yourself. So, if you have made it this far, well done! Here's a chance to see how much you have learned. Take a Golang Programming Language test below.