标准库概述
Last updated
Was this helpful?
Last updated
Was this helpful?
像 fmt
、os
等这样具有常用功能的内置包在 Go 语言中有 150 个以上,它们被称为标准库,大部分(一些底层的除外)内置于 Go 本身。完整列表可以在 查看。
在贯穿本书的例子和练习中,我们都是用标准库的包。可以通过查阅第 350 页包中的内容快速找到相关的包的实例。这里我们只是按功能进行分组来介绍这些包的简单用途,我们不会深入讨论他们的内部结构。
unsafe
: 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中。
syscall
-os
-os/exec
:
os
: 提供给我们一个平台无关性的操作系统功能接口,采用类 Unix 设计,隐藏了不同操作系统间的差异,让不同的文件系统和操作系统对象表现一致。
os/exec
: 提供我们运行外部操作系统命令和程序的方式。
syscall
: 底层的外部包,提供了操作系统底层调用的基本接口。
通过一个 Go 程序让Linux重启来体现它的能力。
示例 9.1 :
archive/tar
和 /zip-compress
:压缩(解压缩)文件功能。
fmt
-io
-bufio
-path/filepath
-flag
:
fmt
: 提供了格式化输入输出功能。
io
: 提供了基本输入输出功能,大多数是围绕系统功能的封装。
bufio
: 缓冲输入输出功能的封装。
path/filepath
: 用来操作在当前系统中的目标文件名路径。
flag
: 对命令行参数的操作。
strings
-strconv
-unicode
-regexp
-bytes
:
strings
: 提供对字符串的操作。
strconv
: 提供将字符串转换为基础类型的功能。
unicode
: 为 unicode 型的字符串提供特殊的功能。
regexp
: 正则表达式功能。
bytes
: 提供对字符型分片的操作。
index/suffixarray
: 子字符串快速查询。
math
-math/cmath
-math/big
-math/rand
-sort
:
math
: 基本的数学函数。
math/cmath
: 对复数的操作。
math/rand
: 伪随机数生成。
sort
: 为数组排序和自定义集合。
math/big
: 大数的实现和计算。
container
-/list-ring-heap
: 实现对集合的操作。
list
: 双链表。
ring
: 环形链表。
下面代码演示了如何遍历一个链表(当 l 是 *List
):
time
-log
:
time
: 日期和时间的基本操作。
log
: 记录程序运行时产生的日志,我们将在后面的章节使用它。
encoding/json
-encoding/xml
-text/template
:
encoding/json
: 读取并解码和写入并编码 JSON 数据。
net
: 网络数据的基本操作。
http
: 提供了一个可扩展的 HTTP 服务器和基础客户端,解析 HTTP 请求和回复。
html
: HTML5 解析器。
runtime
: Go 程序运行时的交互操作,例如垃圾回收和协程创建。
reflect
: 实现通过程序运行时反射,让程序操作任意类型的变量。
exp
包中有许多将被编译为新包的实验性的包。在下次稳定版本发布的时候,它们将成为独立的包。如果前一个版本已经存在了,它们将被作为过时的包被回收。然而 Go1.0 发布的时候并没有包含过时或者实验性的包。
使用 container/list
包实现一个双向链表,将 101
、102
和 103
放入其中并打印出来。
通过使用 unsafe
包中的方法来测试你电脑上一个整型变量占用多少个字节。
encoding/xml
: 简单的 XML1.0 解析器,有关 JSON 和 XML 的实例请查阅第 / 章节。
text/template
:生成像 HTML 一样的数据与文本混合的数据驱动模板(参见)。
net
-net/http
-html
:(参见)
练习 9.1
练习 9.2
上一节:
下一节: