← Course map

GO LEARNING PATH · 17 LESSONS

Packages, modules and tooling

Import paths, go.mod, go test and go vet, without a search engine.

  1. The import path is the module path plus the directory

    Predict the import path of any package in a module.

    3 min · Prediction challenge

  2. A capital letter is the access modifier

    Control visibility without keywords, and name things accordingly.

    3 min · Worked lesson

  3. Tests are a file, not a framework

    Write a table-driven test and run it locally.

    3 min · Worked lesson

  4. The package name is half the API

    Name a package and its exported function without repeating yourself.

    3 min · Prediction challenge

  5. init runs before main, and order is defined

    Predict the order of package variables, init and main.

    3 min · Prediction challenge

  6. A module is a release boundary; a package is a directory

    Resolve module roots, import paths, internal visibility and major-version suffixes.

    3 min · Worked lesson

  7. Explain the selected version before running go get

    Read minimal version selection and investigate a transitive upgrade without guessing.

    3 min · Worked lesson

  8. Checksums, proxies and private modules solve different problems

    Diagnose downloads without leaking private paths or disabling integrity checks globally.

    3 min · Worked lesson

  9. A local workspace can hide a broken release

    Use go.work and replace for development while checking what an independent consumer builds.

    3 min · Worked lesson

  10. Reproduce the artifact: vendor, build tags and embedded files

    Check the source and assets that a clean build actually receives.

    3 min · Worked lesson

  11. Parallel tests must own their mutable resources

    Find races, test caching mistakes and shared integration fixtures before scaling concurrency.

    3 min · Worked lesson

  12. A microbenchmark is not a capacity test

    Measure allocations, concurrency and tail latency without mistaking closed-loop throughput for service capacity.

    3 min · Worked lesson

  13. Profile CPU, allocation and waiting as different bottlenecks

    Use pprof and traces to investigate latency under load instead of increasing pools blindly.

    3 min · Worked lesson

  14. Build concurrency also has a memory budget

    Separate compiler work, runtime goroutines and caches when CI or a small machine stalls.

    3 min · Worked lesson

  15. Pin the compiler and the tools that generate your code

    Distinguish application dependencies, development commands and toolchain selection.

    3 min · Worked lesson

  16. Test unknown inputs and check reachable vulnerabilities

    Combine fuzzing, regression seeds and govulncheck without treating one green tool as complete assurance.

    3 min · Worked lesson

  17. Package initialization is not a request-time connection factory

    Move fallible setup to an explicit owner and close shared resources after work drains.

    3 min · Worked lesson