规范的 Go 语言代码库中蕴含了大量的包,并且在装置 Go 的时候少数会主动装置到零碎中。咱们能够在 $GOROOT/src/pkg 目录中查看这些包。上面简略介绍一些咱们开发中罕用的包。
1) fmt
fmt 包实现了格式化的规范输入输出,这与 C 语言中的 printf 和 scanf 相似。其中的 fmt.Printf() 和 fmt.Println() 是开发者应用最为频繁的函数。
格式化短语派生于 C 语言,一些短语(%- 序列)是这样应用:
- %v:默认格局的值。当打印构造时,加号(%+v)会减少字段名;
- %#v:Go 款式的值表白;
- %T:带有类型的 Go 款式的值表白。
2) io
这个包提供了原始的 I/O 操作界面。它次要的工作是对 os 包这样的原始的 I/O 进行封装,减少一些其余相干,使其具备形象性能用在公共的接口上。
3) bufio
bufio 包通过对 io 包的封装,提供了数据缓冲性能,可能肯定水平缩小大块数据读写带来的开销。
在 bufio 各个组件外部都保护了一个缓冲区,数据读写操作都间接通过缓存区进行。当发动一次读写操作时,会首先尝试从缓冲区获取数据,只有当缓冲区没有数据时,才会从数据源获取数据更新缓冲。
4) sort
sort 包提供了用于对切片和用户定义的汇合进行排序的性能。
5) strconv
strconv 包提供了将字符串转换成根本数据类型,或者从根本数据类型转换为字符串的性能。
6) os
os 包提供了不依赖平台的操作系统函数接口,设计像 Unix 格调,但错误处理是 go 格调,当 os 包应用时,如果失败后返回谬误类型而不是谬误数量。
7) sync
sync 包实现多线程中锁机制以及其余同步互斥机制。
8) flag
flag 包提供命令行参数的规定定义和传入参数解析的性能。绝大部分的命令行程序都须要用到这个包。
9) encoding/json
JSON 目前宽泛用做网络程序中的通信格局。encoding/json 包提供了对 JSON 的根本反对,比方从一个对象序列化为 JSON 字符串,或者从 JSON 字符串反序列化出一个具体的对象等。
10) html/template
次要实现了 web 开发中生成 html 的 template 的一些函数。
11) net/http
net/http 包提供 HTTP 相干服务,次要包含 http 申请、响应和 URL 的解析,以及根本的 http 客户端和扩大的 http 服务。
通过 net/http 包,只须要数行代码,即可实现一个爬虫或者一个 Web 服务器,这在传统语言中是无奈设想的。
12) reflect
reflect 包实现了运行时反射,容许程序通过形象类型操作对象。通常用于解决动态类型 interface{} 的值,并且通过 Typeof 解析出其动静类型信息,通常会返回一个有接口类型 Type 的对象。
13) os/exec
os/exec 包提供了执行自定义 linux 命令的相干实现。
14) strings
strings 包次要是解决字符串的一些函数汇合,包含合并、查找、宰割、比拟、后缀查看、索引、大小写解决等等。
strings 包与 bytes 包的函数接口性能基本一致。
15) bytes
bytes 包提供了对字节切片进行读写操作的一系列函数。字节切片解决的函数比拟多,分为根本处理函数、比拟函数、后缀查看函数、索引函数、宰割函数、大小写处理函数和子切片处理函数等。
16) log
log 包次要用于在程序中输入日志。
log 包中提供了三类日志输入接口,Print、Fatal 和 Panic。
- Print 是一般输入;
- Fatal 是在执行完 Print 后,执行 os.Exit(1);
- Panic 是在执行完 Print 后调用 panic() 办法。
参考源码案例练习