包结构 [1.12.5] (数据包及一层数据包描述)
常用功能库 01 archive // 归档, 打包解压缩功能 => tar包, 实现了tar格式压缩文件的存取 => zip包, 提供了zip档案文件的读写服务基础包 02 bufio // I/O 接口, 缓冲层实现核心包 03 builtin // 预声明标识符, 常用基本数据类型基础包 04 bytes // 字节相关操作实现核心包 05 cmd // => addr2line => api => asm => buildid => cgo => compile => cover => dist => doc => fix => go => gofmt => internal => link => nm => objdump => pack => pprof => test2json => trace => vendor常用功能库 06 compress // 解压缩数据算法实现 => bzip2包, 实现bzip2的解压缩 => flate包, 实现了deflate压缩数据格式 (RFC 1951) => gzip包 , 实现了gzip格式压缩文件的读写 (RFC 1952) => lzw包 , 实现了Lempel-Ziv-Welch数据压缩格式 => zlib包 , 实现了对zlib格式压缩数据的读写 (RFC 1950)基础包 07 container // 容器实现, 常用数据结构实现 => heap包, 提供了对任意类型(实现了heap.Interface接口)的堆操作 => list包, 实现了双向链表 => ring包, 实现了环形链表的操作08 context // 上下文实现常用功能库 09 crypto // 常用加解密算法实现 => aes 实现了AES加密算法 => cipher 实现了多个标准的用于包装底层块加密算法的加密算法实现 => des 实现了DES标准和TDEA算法 => dsa 实现FIPS 186-3定义的数字签名算法(Digital Signature Algorithm, DSA) => ecdsa 实现了椭圆曲线数字签名算法,参见FIPS 186-3 => elliptic 实现了几条覆盖素数有限域的标准椭圆曲线 => hmac 实现了HMAC(加密哈希信息认证码) => internal => md5 实现了MD5哈希算法,参见RFC 1321 => rand 实现了用于加解密的更安全的随机数生成器 => rc4 实现了RC4加密算法 => rsa 实现了PKCS#1规定的RSA加密算法 => sha1 实现了SHA1哈希算法,参见RFC 3174 => sha256 实现了SHA224和SHA256哈希算法,参见FIPS 180-4 => sha512 实现了SHA384和SHA512哈希算法,参见FIPS 180-2 => subtle => tls 实现了TLS 1.2,细节参见RFC 5246 => x509 解析X.509编码的证书和密钥, pkix包提供了共享的、低层次的结构体,用于ASN.1解析和X.509证书、CRL、OCSP的序列化数据库 10 database // 数据库相关接口定义 => sql包, 提供了通用的SQL(或类SQL)数据库接口 (driver包, 定义了应被数据库驱动实现的接口, 这些接口会被sql包使用)11 debug // => dwarf => elf => gosym => macho => pe => plan9obj常用功能库 12 encoding // 编解码实现, 定义了供其它包使用的可以将数据在字节水平和文本表示之间转换的接口 => ascii85 对 ascii85 的数据编码的实现 => asn1 实现了DER编码的ASN.1数据结构的解析,参见ITU-T Rec X.690 => base32 实现了RFC 4648规定的base32编码 => base64 实现了RFC 4648规定的base64编码 => binary 实现了简单的数字与字节序列的转换以及变长值的编解码 => csv csv读写逗号分隔值(csv)的文件 => gob 管理gob流——在编码器(发送器)和解码器(接受器)之间交换的binary => hex 实现了16进制字符表示的编解码 => json 实现了json对象的编解码,参见RFC 4627 => pem 实现了PEM数据编码(源自保密增强邮件协议) => xml基础包 13 errors // 错误(类型)定义核心包 14 expvar // 公共变量的标准接口, 常用数据类型基础功能库 15 flag // 命令行标签解析, 命令参数解析基础功能库 16 fmt // 实现了格式化I/O函数核心包 17 go // => ast => build => constant => doc => format => importer => internal => parser => printer => scanner => token => types常用功能库 18 hash // 常用HASH算法实现, 校验签名算法 => adler32 实现了Adler-32校验和算法,参见RFC 1950 => crc32 实现了32位循环冗余校验(CRC-32)的校验和算法 => crc64 => fnv 实现了FNV-1和FNV-1a(非加密hash函数)网络库 19 html // 用于转义和解转义HTML文本 => template包(html/template)实现了数据驱动的模板, 用于生成可对抗代码注入的安全HTML输出20 image // 2D图片库 => color 实现了基本的颜色库(palette包, 提供了标准的调色板) => draw 提供组装图片的方法 => gif 实现了GIF图片的解码 => internal (imageutil) => jpeg 实现了jpeg格式图像的编解码 => png 实现了PNG图像的编码和解码21 index => suffixarrayb包, 通过使用内存中的后缀树实现了对数级时间消耗的子字符串搜索核心包 22 internal => bytealg => cpu => fmtsort => goroot => nettrace => poll => race => singleflight => syscall => testenv => testlog => trace => x => xcoff基础包 23 io // I/O 接口相关 => ioutil基础功能库 24 log // 实现了简单的日志服务 => syslog 包, 提供一个简单的系统日志服务的接口常用功能库 25 math // 基本常数和数学函数 => big 实现了(大数的)高精度运算 => bits => cmplx 为复数提供了基本的常量和数学函 => rand 实现了伪随机数生成器网络库 26 mime // MIME的部分定义 => multipart包, 实现了MIME的multipart解析,参见RFC 2046 => quotedprintable 网络库 27 net // 网络包, 可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket => http 提供了HTTP客户端和服务端的实现 => cgi 实现了RFC3875协议描述的CGI(公共网关接口) => cookiejar 实现了保管在内存中的符合RFC 6265标准的http.CookieJar接口 => fcgi 实现了FastCGI协议 => httptest 提供HTTP测试的单元工具 => httptrace => httputil 提供了HTTP公用函数,是对net/http包的更常见函数的补充 => internal => pprof 通过提供HTTP服务返回runtime的统计数据,规定的返回格式返回 => internal => mail 解析邮件消息的功能 => rpc 提供了一个方法来通过网络或者其他的I/O连接进入对象的外部方法 => jsonrpc包, 使用了rpc的包实现了一个JSON-RPC的客户端解码器和服务端的解码器. => smtp 实现了简单邮件传输协议(SMTP),参见RFC 5321 => textproto 实现了对基于文本的请求/回复协议的一般性支持,包括HTTP、NNTP和SMTP => url 解析URL并实现了查询的逸码,参见RFC 3986基础功能库 28 os // 操作系统相关功能和接口实现 => exec => signal => user基础功能库 29 path // 地址路径解析包 => filepath 文件路径解析30 plugin // 插件接口高级库 31 reflect // 运行时反射, 允许程序操作任意类型的对象常用功能库 32 regexp // 正则表达式搜索 => syntax高级库 33 runtime // TODO(osc) 需更新 runtime 包含与Go的运行时系统进行交互的操作 => cgo cgo 工具生成的代码的运行时支持 => debug 程序在运行时调试其自身的功能 => internal => msan => pprof 按照可视化工具 pprof 所要求的格式写出运行时分析数据 => race 实现了数据竞争检测逻辑 => trace基础包 34 sort // 为切片及用户定义的集合的排序操作基础包 35 strconv // 实现了基本数据类型和其字符串表示的相互转化基础包 36 strings // 用于操作字符的简单函数高级库 37 sync // 互斥锁这类的基本的同步原语 => atomic 提供了底层的原子性内存原语, 同步算法的实现实现很有用38 syscall => js39 testing => internal => iotest => quick40 text // => scanner 提供对utf-8文本的token扫描服务 => tabwriter 实现了写入过滤器(tabwriter.Writer),可以将输入的缩进修正为正确的对齐文本 => template 实现了数据驱动的用于生成文本输出的模板 (parse)基础功能库 41 time // 时间的显示和测量用的函数常用功能库 42 unicode // 测试Unicode码点属性的数据和函数 => utf16, 对UTF-16序列的编码和解码 => utf8, UTF-8文本编码的函数和常量高级库 43 unsafe // Go程序类型安全的所有操作
[包结构分析]
: 总包数目, 43 个
: 包结构划分 : 核心包结构、基础包结构、功能包库 (数据处理库、网络库、标准输入输出库)
// 核心包结构 : GO语言运行最小功能核心包数目
[核心包 5] 8
17 go
03 builtin // 预声明标识符, 常用基本数据类型
14 expvar // 公共变量的标准接口, 常用数据类型
22 internal
05 cmd
[基础包 8]
02 bufio // I/O 接口, 缓冲层实现
04 bytes // 字节相关操作实现
07 container // 容器实现, 常用数据结构实现
23 io // I/O 接口相关
34 sort // 为切片及用户定义的集合的排序操作
35 strconv // 实现了基本数据类型和其字符串表示的相互转化
36 strings // 用于操作字符的简单函数
13 errors // 错误(类型)定义
[基础功能库 6]
15 flag // 命令行标签解析, 命令参数解析
16 fmt // 实现了格式化I/O函数
24 log // 实现了简单的日志服务
28 os // 操作系统相关功能和接口实现
29 path // 地址路径解析包
41 time // 时间的显示和测量用的函数
[高级库 4]
31 reflect // 运行时反射, 允许程序操作任意类型的对象
33 runtime // TODO(osc) 需更新 runtime 包含与Go的运行时系统进行交互的操作
37 sync // 互斥锁这类的基本的同步原语
43 unsafe // Go程序类型安全的所有操作
[常用功能库 8]
01 archive // 归档, 打包解压缩功能
06 compress // 解压缩数据算法实现
09 crypto // 常用加解密算法实现
12 encoding // 编解码实现
18 hash // 常用HASH算法实现, 校验签名算法
25 math // 基本常数和数学函数
32 regexp // 正则表达式搜索
42 unicode // 测试Unicode码点属性的数据和函数
[数据库 1]
10 database // 数据库相关接口定义
[网络库 3]
19 html // 用于转义和解转义HTML文本
26 mime // MIME的部分定义
27 net // 网络包, 可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket