标准的Go 代码库中包含了大量的包,并且在安装Go 的时候多数会伴随一起安装。浏
览$GOROOT/src/pkg 目录并且查看那些包会非常有启发。无法对每个包就加以解说,不过下
面的这些值得讨论:
fmt
包fmt 实现了格式化的I/O 函数,这与C 的printf 和scanf 类似。格式化短语派生于C
。一些短语(%-序列)这样使用:
%v
默认格式的值。当打印结构时,加号(%+v)会增加字段名;
%#v
Go 样式的值表达;
%T
带有类型的Go 样式的值表达;
io
这个包提供了原始的I/O 操作界面。它主要的任务是对os 包这样的原始的I/O 进行封
装,增加一些其他相关,使其具有抽象功能用在公共的接口上。
bufio
这个包实现了缓冲的I/O。它封装于io.Reader 和io.Writer 对象,创建了另一个对象
(Reader 和Writer)在提供缓冲的同时实现了一些文本I/O 的功能。
sort
sort 包提供了对数组和用户定义集合的原始的排序功能。
strconv
strconv 包提供了将字符串转换成基本数据类型,或者从基本数据类型转换为字符串
的功能。
os
os 包提供了与平台无关的操作系统功能接口。其设计是Unix 形式的。
sync
sync 包提供了基本的同步原语,例如互斥锁。
flag
flag 包实现了命令行解析。参阅”命令行参数” 在第92 页。
json
json 包实现了编码与解码RFC 4627 [22] 定义的JSON 对象。
template
数据驱动的模板,用于生成文本输出,例如HTML。
将模板关联到某个数据结构上进行解析。模板内容指向数据结构的元素(通常结构的
字段或者map 的键)控制解析并且决定某个值会被显示。模板扫描结构以便解析,而
“游标”@ 决定了当前位置在结构中的值。
http
http 实现了HTTP 请求、响应和URL 的解析,并且提供了可扩展的HTTP 服务和基本
的HTTP 客户端。
unsafe
unsafe 包包含了Go 程序中数据类型上所有不安全的操作。通常无须使用这个。
reflect
reflect 包实现了运行时反射,允许程序通过抽象类型操作对象。通常用于处理静态类
型interface{} 的值,并且通过Typeof 解析出其动态类型信息,通常会返回一个有接
口类型Type 的对象。包含一个指向类型的指针,*StructType、*IntType 等等,描述
了底层类型的详细信息。可以用于类型转换或者类型赋值。参阅6,第”自省和反射”
节。
exec
exec 包执行外部命令。