Go packages are a fundamental concept for organizing your code into reusable and maintainable units. In this guide, we'll explore what packages are, how to create and use them, and provide sample code to demonstrate their usage.

What Are Packages?

In Go, a package is a collection of Go source files that reside in the same directory and have the same package declaration at the top. Packages help organize and structure code, making it modular, reusable, and easier to manage. Go provides a standard library of packages for common tasks.

Creating Packages

To create a package, place your Go source files in a directory and include a package declaration at the top of each file. Here's an example:

// math.go
package math
func Add(a, b int) int {
return a + b
// main.go
package main
import (
func main() {
sum := math.Add(3, 4)
fmt.Println("Sum:", sum)

In this code, we have a package named "math" with an "Add" function, and we import it in the "main" package to use the "Add" function.

Package Naming

Package names should be lowercase, concise, and related to the functionality they provide. Package names should also be unique within your workspace.

Exported Identifiers

In Go, an identifier (function, variable, or constant) is exported if it starts with an uppercase letter. Exported identifiers can be accessed from other packages, while unexported ones are limited to the package they are defined in.

Package Structure

A typical Go package may consist of multiple source files, and it is common to have a package directory structure that reflects the code's organization.

Further Resources

To continue learning about Go packages and code organization, consider these resources: