LESSON 1: Go Fundamentals, Interfaces, and CLI Tooling Explained
In this chapter, you will learn Go's fundamental building blocks including variables, functions, and control structures, then advance to interfaces and type assertions, and discover how to turn your Go programs into system-wide Linux CLI tools.
In this first lesson of our Golang series, we will cover the fundamental building blocks you need to start writing Go programs, and then we go further into more advanced concepts like interfaces and type assertions that you will use throughout this series.
Prerequisites
Before diving into code, you'll need Go installed on your system, so visit golang.org/doc/install for installation instructions for your operating system.
For Linux users, you can install Go using your package manager:
# Debian/Ubuntu
sudo apt install golang -y
# Fedora
sudo dnf install golang -y
This will install the version available in your distribution repository, which may not be the latest version, but is fine for this series.
If you are on Windows or macOS, you can go to the official website and download the Go installer appropriate for your system.
All code examples in this lesson can be saved as .go files and run using:
go run filename.go
Part 1: Go Fundamentals
Before we build real-world projects, you need to understand Go's core concepts, which are designed to be simple, and once you grasp these basics, you will feel confident building anything.
Variables and Data Types
In Go, you declare variables using the var keyword or the shorthand := operator. Go is statically typed, meaning every variable has a specific type determined at compile time.
Here is how you declare variables:
package main
import "fmt"
func main() {
// Using var keyword
var name string = "Alice"
var age int = 30
// Using shorthand (Go infers the type)
city := "New York"
isActive := true
fmt.Println(name, age, city, isActive)
}
Go has several basic data types:
- string - Text values like
"Hello" - int - Whole numbers like
42 - float64 - Decimal numbers like
3.14 - bool - true or false values
The shorthand := is convenient and commonly used inside functions. It automatically infers the type based on the value you assign.
However, := can only be used when declaring a new variable. If you want to assign a new value to an existing variable, use = instead.
Example:
age := 30 // declaration
age = 31 // reassignment
Functions
Functions are reusable blocks of code that perform specific tasks. In Go, you define functions using the func keyword.
Here is a simple function: