根目录
|– AUTHORS — 文件,官方 Go语言作者列表
|– CONTRIBUTORS — 文件,第三方贡献者列表
|– LICENSE — 文件,Go语言发布授权协议
|– PATENTS — 文件,专利
|– README — 文件,README文件
|– VERSION — 文件,当前Go版本
|– api — 目录,go*.txt:每个版本的API列表,文件内容只增不减,版本发布后就归档不再改动
|- bin — 目录,存放所有官方提供的Go语言相关工具的可执行文件
|– doc — 目录,Go语言的离线document html。这里面有不少其他资源,比如gopher图标之类的。
|– favicon.ico — 文件,官网logo
|– include — 目录,Go 基本工具依赖的库的头文件
|– lib — 目录,包含用代码编译的时区文件,和部分IANA的时区数据库数据。
|– misc — 目录,模块杂项包含与特定构建模式(cgo)和平台(Android和iOS)有关的测试和二进制文件。
|- pkg — 各种包编译后的生成 *.a文件
|– robots.txt — 文件,搜索引擎robots文件
|– src — 目录,Go语言源码:基本工具(编译器等)、标准库
|– test — 目录,包含很多测试程序(并非_test.go方式的单元测试,而是包含main包的测试),包括一些fixbug测试
src(只列举部分)
archive:归档文件处理库,可以用来处理tar与zip类型文件。
builtin:定义了常用了内置类型、函数和接口,比如make、new、len、error等。
cmd:提供了Go语言的基本工具,比如我们常用的代码格式化工具gofmt、静态检查工具vet等。
compress:压缩、解压工具,支持bzip2、flate、gzip、lzw、zlib等格式。
container :提供了双向链表(list)、堆(heap)、环形联表(ring)的数据结构的操作。
context:通常在goroutine切换执行时,需要知道相关状态信息才能执行,而这些信息就被封装在context中,它的使用在Go语言中十分广泛。
crypto:封装了很多加解密算法,比如rsa、sha1、aes、md5等函数。
database:提供了各种数据库的通用API,比如SQLite、MySQL、Postgres。
debug:支持Go程序调试。
encoding:封装了各类编码的实现,比如base64、json、xml、hex等。
io:为文件I/O提供了一些基本的接口,bufio就对它进行了实现。
mime:封装了MIME类型的解析,MIME是媒体类型,比如文档、文件、字节流性质的格式。
net:封装了各种网络IO的函数,比如TCP、UDP、Socket等。
os:封装了用来操作操作系统的命令,比如调用exec可以执行shell脚本等,当然它支持不同平台的操作。
path:实现了用于处理斜杠分隔符路径的函数。
regexp:封装了正则表达式的实现。
runtime:包含了Go运行时的操作。例如GMP的结构源码在文件中\src\runtime\runtime2.go
sort:封装了部分排序算法。
strconv:封装了基础类型与字符串互相转换的方法,比如int转string,反之亦然。
strings:封装了字符串操作的相关方法。
sync:封装了基本的同步机制,各种锁的实现。
syscall:封装了一系列系统调用的接口。
testing:为Go语言测试程序提供支持。
text:封装了文本处理相关的方法,比如文本扫描或文本标签过滤器等。
time:封装了时间处理相关的函数,比如获取当前时间,计算时间差等。
unicode:封装了utf8、utf16的编解码方法。
unsafe:用于一些不安全的操作场景,比如正常情况下,指向不同类型数据的指针是无法互相转换的,但是就可以用unsafe的Pointer方法来实现,所以应该要谨慎使用。