Go开发包的安装目录 | 青训营笔记

104 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

Go 语言源码目录

今日学习并了解了一下Go语言开发包的安装目录,现做一些总结和说明。

目录概述

image.png

部分目录阐释

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:用于一些不安全的操作场景。