Skip to main content

GO: packages 包

📅 2026-02-12 ✏️ 2026-03-19 CS GO
go version # go version go1.25.6

1 · packages 包#

go help packages

很多 go 命令都作用于一连串的,通常来说, 是可导入的路径(import path)

  1. 以 / 开头,或以 .、.. 开头:按 文件系统路径 处理,表示该目录下的包
  2. 非 gomod 模式下,在 env GOPATH 的某个 DIR 下找 DIR/src/{{PACKAGE}}

1.1 · 保留 path 名#

main, all, std, cmd, tool

  1. tool: 当前模块 go.mod 里定义的工具,可以通过go install tool下载tool,见Go: modules 模块

1.2 · 匹配

按 完整 import path 匹配,不是按短包名

例如:fmt 可以指标准库的 fmt,但 http 不会匹配 net/http,必须写 net/http

1.3 · 通配符 …

  1. ... 匹配任意
  2. /...匹配任意子包
  3. 通配符不会匹配vendor,需要显示写,如./vendor/...

1.4 · 其他约定

  1. 唯一性:import path 必须唯一,可以加唯一前缀如github.com/user/repo
  2. 特殊用法:如果包是一系列的go文件,仅将这些文件合成一个包(忽略其他文件和build tag)
  3. 忽略:忽略._开始的目录/文件,以及testdata目录
  4. 不同包可以有相同包名(文件的package语句),但保留main/documentation

2 · 思考

  1. 在 Go 里,真正的“单元”不是函数或类,而是 package(包)
  2. API 通过包暴露,所以package 是测试的基本单元