> For the complete documentation index, see [llms.txt](https://wskdsgcf.gitbook.io/mastering-go-zh-cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wskdsgcf.gitbook.io/mastering-go-zh-cn/06.0/06.1.md).

# 06.1 关于Go packages

在 Go 中所有东西都以 packages 形式传递。Go **package** 是 Go 源文件，它以 `package` 关键字开头后面跟着这个 package 的名字。一些 packages 有结构。例如，`net` package 有几个子目录，分别是 `http, mail, rpc, smtp, textproto` 和 `url`，它们应该分别依 `net/http, net/mail, net/rpc, net/smtp, net/textproto` 和 `net/url` 引入。

packages 主要用于组合相关函数，变量和常量，以便您可以在自己的程序中简单地传递和使用它们。注意 `main` package 里的内容，Go packages 不是自控制程序并且不能被编译为可执行文件。这意味着他们需要直接或间接的在 `main` package 里调用才能使用。因此，如果您把它当成自控制程序来执行，您会失望的：

```
$go run aPakcage.go
go run: cannot run non-main package
```
