A package is Go’s basic unit of code organization. It groups related functions, types, and values behind a boundary that determines what other packages can use. A module can contain multiple packages, each imported separately. section 2.4.5
An executable and a library call
Declare an executable’s files with `package main` and provide a `main()` function; together they give the compiler an entry point. To call an imported package, use its name as a qualifier: `fmt.Println("Found", numSpaces+1, "words")`. The capital P matters: identifiers beginning with an uppercase letter are exported for use by importers. section 2.4.5 section 2.4.11
Name other packages for their purpose, and keep dependencies flowing in one direction: the compiler rejects direct or indirect import cycles. A small application may need little structure. Larger projects can put separate executables under `cmd` and restrict externally importable code with `internal`. section 11.1.1
Growing an RSS application
An RSS reader can separate a shared domain model, persistent storage, a REST API, and a background worker. Packages provide the local code boundaries; modules group packages into independently managed components, and a workspace coordinates local development across those modules. section 11.0 section 11.4






