这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
Go 语言源码目录
今日学习并了解了一下Go语言开发包的安装目录,现做一些总结和说明。
目录概述
部分目录阐释
api目录
该目录中的每个文件都是Go语言API列表,每行一个,方便IDE使用。
- README:说明文件
- except.txt:列举了接下来可能会废弃的API
- go*.txt:囊括了每个版本的API列表
- next.txt:列举了未来的版本可能实现的新功能
src目录
- archive:归档文件处理库,可以用来处理tar与zip类型文件。
- bufio:主要用于文本的读取写入。
- builtin:定义了常用了内置类型、函数和接口。
- bytes:定义了用来操作字节的函数。
- cmd:提供了Go语言的基本工具。
下面列举出几个比较常用的工具:
- addr2line:用来支持pprof的
- objdump:用来支持pprof
- api:用于生成Go语言API列表
- asm:汇编器
- buildid:用来更新库或二进制文件中构建的标识
- cgo:支持创建调用C代码的包
- compile:编译工具
- go:管理源代码工具
- godoc:用于提取并生成Go程序文档
- gofmt:代码格式化工具
- pack:备份压缩工具
- link:连接器
- vet:代码静态检查工具
- dist:负责构建Go语言的其他工具
- fix:用来找到使用旧API的程序,然后更新为新的API
- cover:用来分析单元测试覆盖率的工具
- inernal:一些内部通用实现,被其他包调用
- nm:列出了由目标文件,归档文件或可执行文件定义或使用的符号
- pprof:Go程序的性能分析工具
- vendor:Go语言包依赖工具
- test2json:将Go测试程序的输出转换为机器可读的JSON流
- trace:用来跟踪分析goroutines运行调度状态等功能的工具
- compress:压缩、解压工具,支持bzip2、flate、gzip、lzw、zlib等格式。
- container:提供了双向链表(list)、堆(heap)、环形联表(ring)的数据结构的操作。
- context:通常在goroutine切换执行时,需要知道相关状态信息才能执行。
- crypto:封装很多加解密算法。
- database:提供了各种数据库的通用API,比如SQLite、MySQL、Postgres。
- debug:支持Go程序调试。
- encoding:封装了各类编码的实现,比如base64、json、xml、hex等。
- errors:是我们经常使用的错误函数,也可以自定义。
- expvar:提供了一系列标准接口。
- flag:解析处理命令行参数的工具。
- fmt:封装了各种格式化输出方法。
go
- hash:封装了crc32、crc64在内的哈希函数。
- html:HTML模板引擎。
- image:一般语言都会有的图像处理库。
- index:用来实现字符串高速匹配查找。
- internal:internal专门用来控制包导入权限的。
- io:为文件I/O提供了一些基本的接口,bufio就对它进行了实现。
- log:封装了日志记录方法,比如log.Fatal、log.Print等。
- math:封装了基本的数学相关的函数。
- mime:封装了MIME类型的解析,MIME是媒体类型,比如文档、文件、字节流性质的格式。
- net:封装了各种网络IO的函数,比如TCP、UDP、Socket等。
- os:封装了用来操作操作系统的命令。
- path:实现了用于处理斜杠分隔符路径的函数。
- plugin:Go1.8版本以后提供的插件机制,可以动态地加载动态链接库文件.so。
- reflect:封装反射读取方法。
- regexp:封装了正则表达式的实现。
- runtime:包含了Go运行时的操作。
- sort:封装了部分排序算法。
- strconv:封装了基础类型与字符串互相转换的方法。
- strings:封装了字符串操作的相关方法。
- sync:封装了基本的同步机制,各种锁的实现。
- syscall:封装了一系列系统调用的接口。
- testing:为Go语言测试程序提供支持。
- text:封装了文本处理相关的方法。
- time:封装了时间处理相关的函数。
- unicode:封装了utf8、utf16的编解码方法。
- unsafe:用于一些不安全的操作场景。