Understanding go.mod
Start with Understanding go.mod
The go.mod file declares a module path, a Go version and any module dependencies needed for the project.
What you’ll learn
- Explain the main purpose of understanding go.mod.
- Read and run the complete Go example in this lesson.
- Apply the concept and recognize common mistakes.
Understand the idea
For example, the lines module example.com/tools and go 1.23 identify a module and its minimum language/module semantics baseline. Dependencies are listed using require; replace and exclude have specialized uses.
The go directive is not the version of every dependency, nor does it automatically install a toolchain. Newer versions of Go may maintain additional toolchain metadata. Prefer normal Go commands over hand-editing a dependency’s version without understanding the graph.
Visualize how it works
Follow this diagram before executing the example. Check where a value or decision changes what runs next.
Tools, syntax and practical notes
Example go.mod
module example.com/tools
go 1.23To inspect the actual file, use go mod edit -json.
Run a complete Go example
This example is a complete program. Save it as main.go or paste it into the Go Playground.
Go code
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Println("Go version:", runtime.Version() != "")
}
Output
Go version: trueTrace what the program does
The executable inspects whether the runtime provides a nonempty version string. The exact version depends on the installed toolchain; the printed boolean remains true.
Avoid common mistakes
- Do not assume go.mod can be executed like source code.
- The go directive concerns language/module behavior; it is not a list of installed packages.
Try it yourself
Open go.mod and identify module, go and require directives. Explain how they differ.
Tip: Edit the example above, predict the output, and run the modified code to test your reasoning.
Check your understanding
What you should remember
You have practiced Understanding go.mod in a small, self-contained program. The important habit is to predict what runs, inspect the actual output and distinguish the language rule from the particular example.
Before continuing, make sure you can explain the program to someone who has not seen it, including the line that changes its result.
Reaching the recap and completing the quizzes are separate milestones.