Go 1.25.1基本包
目录
如何查看基本包
基本包介绍
基础工具与 I/O
并发与上下文
时间与日志
网络与 Web
操作系统接口
编码/序列化/压缩
加密与证书
哈希
数学与随机
图像
模板/文本处理
数据库
Go 源码处理/工具
测试与性能
Unicode/文本编码
现代泛型工具(Go 1.21+ 引入,强烈推荐)
其他你列表里出现但业务少直接用的顶级包
明确不建议导入的目录
如何查看基本包
基本包介绍
基础工具与 I/O
- fmt:格式化输入输出(
Print*
、Sprintf
等)。 - errors:错误构造与包装(
errors.New
、Is
、As
、Join
)。 - bufio:带缓冲的 Reader/Writer,减少系统调用。
- bytes:字节切片处理(查找、替换、Buffer)。
- strings:字符串处理(分割、拼接、查找、替换、Builder)。
- strconv:字符串与数值/布尔/进制转换。
- io / io/fs:流式读写接口、文件系统抽象;
io.Copy
/TeeReader
很常用。 - path / path/filepath:路径拼接与分解(
filepath
走本机规则)。 - flag:命令行参数解析(
port=8080
)。 - embed:把静态资源打进二进制(
//go:embed
)。 - sort:排序与自定义比较。
- container/{heap,list,ring}:堆、链表、环形链表基础容器。
并发与上下文
- sync:互斥锁
Mutex
、读写锁RWMutex
、Once
、Cond
等。 - sync/atomic:原子操作(无锁计数/标志位)。
- context:取消/超时/携带请求范围数据,贯穿全链路。
时间与日志
- time:时间点、定时器、格式化、时区数据(
time/tzdata
可内置时区)。 - log:简单日志。
- log/slog:结构化日志(建议在新项目用它)。
网络与 Web
- net:底层网络(TCP/UDP/DNS 解析、IP)。
- net/http:HTTP 服务器与客户端(
http.ListenAndServe
、http.Client
)。- net/http/httptest:HTTP 单测辅助。
- net/http/httputil:反向代理、请求/响应 dump。
- net/http/httptrace:跟踪一次 HTTP 请求各阶段耗时。
- net/http/pprof:一键暴露
pprof
性能分析路由。
- net/url:URL 解析与拼装。
- net/mail:邮件头解析。
- mime / mime/multipart:MIME 类型与多段表单上传(文件上传)。
- net/textproto:文本协议辅助。
- plugin:插件机制(特定平台/构建要求,少用)。
操作系统接口
- os:文件/目录/环境变量/进程参数等。
- os/exec:启动外部进程,管道通信。
- os/signal:捕获信号(优雅退出)。
- os/user:系统用户信息。
- syscall:系统调用(底层,非跨平台,能不用尽量不用)。
编码/序列化/压缩
- encoding/json:JSON 编解码(
Encoder/Decoder
支持流式)。 - encoding/xml/csv/gob/pem/asn1/binary/base64/base32/hex/ascii85:常见格式。
- compress/{gzip,zlib,flate,lzw,bzip2}:压缩算法族。
- encoding 顶级包:子包归类,不直接用。
加密与证书
- crypto/aes, des, rsa, ecdsa, ed25519, hmac, sha1/256/512, sha3, subtle:常用算法。
- crypto/tls:TLS 握手/配置(HTTPS 基石)。
- crypto/x509 / x509/pkix:证书/私钥解析、验证。
- crypto/rand:安全随机数(密钥用它,不要用
math/rand
)。 - crypto/hkdf, pbkdf2:密钥派生。
- (列表里很多
crypto/internal/*
、crypto/fips140*
是标准库合规与实现细节,平时不导入。)
哈希
- hash/{adler32,crc32,crc64,fnv,maphash}:非加密哈希函数;
maphash
适合哈希表/防碰撞。 - crypto/md5:已不安全,仅作校验。
- hash 顶级包:接口定义。
数学与随机
- math:基础数学常数与函数。
- math/big:大整数/有理数(任意精度)。
- math/bits:位运算加速。
- math/cmplx:复数运算。
- math/rand / math/rand/v2:伪随机数(非安全);
v2
为更新版 API。
图像
- image:通用图像接口与
RGBA
等基本类型。 - image/{color,draw,gif,jpeg,png}:颜色模型、绘制、常见格式编解码。
模板/文本处理
- text/template:纯文本模板(邮件/配置文件等)。
- html/template:带 XSS 逃逸的 HTML 模板(Web 推荐用它)。
- text/scanner:词法扫描器。
- text/tabwriter:终端等宽对齐输出的排版器。
- regexp / regexp/syntax:正则(
syntax
是内部语法树,一般只用regexp
)。
数据库
- database/sql:数据库抽象;需要配具体驱动(如
lib/pq
、mysql
等)。 - database/sql/driver:写驱动的人用的接口定义。
Go 源码处理/工具
- go/ast, token, parser, printer, format:Go 源码解析/打印/格式化(
gofmt
的基石)。 - go/types:类型检查。
- go/build, build/constraint:源码构建标签/平台判定。
- go/doc, go/doc/comment:文档抽取。
- go/version:Go 版本解析。
- debug/{elf,macho,pe,dwarf,gosym,buildinfo}:可执行文件/符号/调试信息处理。
- index/suffixarray:后缀数组(文本检索)。
测试与性能
- testing:单元测试(
go test
)。 - testing/quick:属性测试(快速随机用例)。
- testing/iotest/fstest:I/O/文件系统测试辅助。
- runtime/pprof / net/http/pprof:CPU/内存/阻塞等性能剖析。
- expvar:导出运行时指标到 HTTP(
/debug/vars
)。 - runtime/metrics:标准化运行时指标读取。
Unicode/文本编码
- unicode / unicode/{utf8,utf16}:字符集与编码处理。
- mime/quotedprintable:QP 编码(邮件)。
现代泛型工具(Go 1.21+ 引入,强烈推荐)
- cmp:通用比较(
Compare
、Less
等)。 - slices:切片工具(
Clone
、Equal
、Sort
、Index
、Delete
…)。 - maps:map 工具(
Keys
、Values
、Clone
、Equal
…)。
其他你列表里出现但业务少直接用的顶级包
- reflect:反射(动态取字段/调用,慎用)。
- unique / weak / structs / iter:近版本新增/较少直接用的通用设施:
- iter:为“基于函数的迭代器”约定提供支持(与
slices
/maps
等范式配合)。 - unique / weak / structs:这几个包偏底层/小众,更多用于库与运行时的支撑或高级用法;业务日常很少直接依赖,建议按需
go doc 包名
查看你这版的 API 说明。
- iter:为“基于函数的迭代器”约定提供支持(与
- plugin:动态插件(有限平台与构建限制)。
- cmp/slices/maps/log/slog/math/rand/v2:上面已解释——是新版常用增强。
明确不建议导入的目录
- internal/...:标准库/工具链内部实现与测试基建;外部不能导入。
- runtime/...:运行时/调度器/GC/trace 等底层;除个别顶层
runtime
函数外,业务很少直接用。 - vendor/golang.org/x/...:vendor 进标准库内部使用的第三方子包镜像;业务请用正常的
golang.org/x/...
依赖。