Go Best Practices & Patterns

A quick-reference catalog of common Go patterns, organized by category. Each pattern is covered in detail in its respective lesson.


Concurrency Patterns


Error Handling Patterns


Structural Patterns


Data Patterns


Interface Patterns

// Singleton with sync.Once
var (
    instance *DB
    once     sync.Once
)

func GetDB() *DB {
    once.Do(func() { instance = &DB{} })
    return instance
}

Testing Patterns

func TestAdd(t *testing.T) {
    cases := []struct{ a, b, want int }{
        {1, 2, 3},
        {0, 0, 0},
        {-1, 1, 0},
    }
    for _, c := range cases {
        got := Add(c.a, c.b)
        if got != c.want {
            t.Errorf("Add(%d, %d) = %d, want %d", c.a, c.b, got, c.want)
        }
    }
}

Generic Patterns (Go 1.18+)


API Design Patterns

Quality Score: 10% (0 ratings)
Rate
Help Improve This Page
main.go
Terminal
Compiling & Running...
Ready. Press 'Run Code' to execute.