11.1 标准库概述
- unsafe: 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中。
- syscall-os-os/exec:
- os: 提供给我们一个平台无关性的操作系统功能接口,采用类 Unix 设计,隐藏了不同操作系统间的差异,让不同的文件系统和操作系统对象表现一致。
- os/exec: 提供我们运行外部操作系统命令和程序的方式。
- syscall: 底层的外部包,提供了操作系统底层调用的基本接口。
- 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: 环形链表
- time-log:
- time: 日期和时间的基本操作。
- log: 记录程序运行时产生的日志,我们将在后面的章节使用它。
- encoding/json-encoding/xml-text/template:
- encoding/json: 读取并解码和写入并编码 JSON 数据。
- encoding/xml: 简单的 XML1.0 解析器,有关 JSON 和 XML 的实例请查阅第 12.9/10 章节。
- text/template:生成像 HTML 一样的数据与文本混合的数据驱动模板(参见第 15.7 节)。
- net-net/http-html:(参见第 15 章)
- net: 网络数据的基本操作。
- http: 提供了一个可扩展的 HTTP 服务器和基础客户端,解析 HTTP 请求和回复。
- html: HTML5 解析器。
- runtime: Go 程序运行时的交互操作,例如垃圾回收和协程创建。
- reflect: 实现通过程序运行时反射,让程序操作任意类型的变量。
- regexp: 正则匹配使用。
- sync: 实现协程并发同步。
- big: 精密计算,被包含在math包下。
11.2 自定义包和可见性
函数和变量的可见性,只需首字母使用大写即可。可见性是指在其他的目录,其他的包中的函数能够调用此函数或变量,只需导入此函数或变量所属包即可。
main.go文件中的main函数要调用./test/test.go中的Test()函数(属test包),需先导入test包(其实就是test目录,因为规范上test目录下的文件均属于test包),import “./test”,然后调用 t :=test.Test()。
不在相对路径的包,即不是自定义包,比如引用的是github上下载的包(一般存储在C:\Users\你的名字\go\pkg\mod\github.com),则导入的时候go会去gopath的pkg下去找。