Skip to content

Go modules and workspace structure

In Go development, a module is the fundamental unit for managing dependencies and organizing source code.^[400-devops-09-scripting-language-golang-introduction-part-3http-readme.md] It defines a directory containing a collection of Go packages that are compiled together, typically associated with a specific repository or project scope.^[400-devops-09-scripting-language-golang-introduction-part-3http-readme.md]

Module initialization

To define a new workspace module, the go mod init command is used within the project's root directory^[400-devops-09-scripting-language-golang-introduction-part-3http-readme.md].

This command creates a go.mod file that tracks the module's path and its dependencies^[400-devops-09-scripting-language-golang-introduction-part-3http-readme.md]. For example, initializing a module for a video application might look like this:

mkdir videos
cd videos
go mod init videos

Project structure

A typical Go workspace organizes code by separating the application entry point from domain-specific logic^[400-devops-09-scripting-language-golang-introduction-part-3http-readme.md].

  • Entry point (main.go): Defines the package main and the main() function, serving as the starting point for execution^[400-devops-09-scripting-language-golang-introduction-part-3http-readme.md].
  • Domain logic: Additional files, such as videos.go, are created within the same directory to handle specific data structures and business logic^[400-devops-09-scripting-language-golang-introduction-part-3http-readme.md]. These files also belong to package main, allowing them to share functions and types seamlessly with main.go^[400-devops-09-scripting-language-golang-introduction-part-3http-readme.md].
  • [[Go HTTP server]]
  • [[JSON handling in Go]]

Sources

^[400-devops-09-scripting-language-golang-introduction-part-3http-readme.md]