Go 1.11标准库
import “archive/tar”
可以将多个文件,以tar格式打包
import “archive/zip”
可以将多个文件,以zip格式打包
import “bufio”
可以把io.Reader做为入参,来做split等操作。 bytes,strings包里的split都不可以使用io.Reader,只能针对内存buf进行。
import “compress/zlib”
将io.Reader作为入参,使用zlib进行压缩,这个package里还有bzip2,flate,gzip, lzw,gzip,zlib压缩格式。提供的有通用的Reader和Writer接口。
import “container/heap”
heap实现了一个最小堆(或者最大堆,主要看你实现的swap接口),可以将你的数组初始化为堆,还提供了Fix接口,使新增的元素也加入到堆里面。
import “container/list”
双向链表
import “container/ring”
双向环
import “context”
函数调用之间同步的一种方式
import “crypto”
md5,sha1等等 其中tls包提供的有net接口,可以配置pem证书,并listen端口提供服务。
import “database/sql”
db接口,支持事务还有context, db.Open()中,把driver作为入参传入即可。目前的driver,有mysql, ms sql, postgres, sqlite, hive, oracle, odbc, sybase 等等
import “debug/dwarf”
读取可执行文件中的dwarf调试信息,还有elf,可以读取elf格式的可执行文件,各个端的内容。gosym读取符号表和重定向内容.
import “encoding”
有encode和decode接口,可以编解码ascii85, asn1, base32, base64, binary, csv, gob, hex, json, pem, xml。gob是将go中的类型转换成二进制的一种格式。
import “error”
只有New()和Error()接口
import “expvar”
会开启http server接口,提供一个查看和修改应用内部变量的http接口,默认路径是/debug/vars
import “flag”
命令行参数解析
import “fmt”
print和scan,类似于C里面的语法
import “go”
ast 分析go代码的语法树,build 环境变量,constant 各个类型的常量和运算符,doc 生成文档,format可以将语法正确的[]byte进行格式化。
import “hash”
有哈希算法adler32, crc32, crc64, fnv
import “html”
有转义功能,html/template包 html渲染,
import “image”
有gif, png, jpeg格式,可以encode和decode,颜色空间有rgba, ycbcr, gray, paletted, cmyk, alpha,有subimage函数可以用。https://github.com/nfnt/resize
import “index/suffixarray”
针对[]byte的数据建立索引,log(n)时间复杂度下,用Lookup查找子串。
import “internal”
bytealg, cpu, nettrace只是支持内部其他包来使用,并不是面向go的使用者,
poll包主要将面向系统线程的非阻塞操作转换成面向协程的阻塞操作,包了很多系统调用。
race包里封装了runtime的acquire, release等锁的实现函数。
trace包里定义了如何获取goroutine的运行情况,HIA包括P,G的调度情况,调用栈的情况。
singleflight包防止请求击穿,类似于合并回源,主要的函数 Group.Do()。
import “io”
普通Reader,PipeReader, limitReader,MultiReader,TeeReader,SectionReader,还有CopyBuffer,CopyN
ioutil包 Discard 类似于/dev/null,里面竟然有一个TempDir()创建一个临时文件,更应该放在os包里才对吧
import “log”
可以直接用log.Println() 输出到屏幕,或者 New(out io.Writer, prefix string, flag int) *Logger。
impot “math”
数学计算
import “mime”
管理mime的对应关系,有系统的mime,也可以自己添加mime
1 | /etc/mime.types |
import “net”
Dialer 可以支持的网络协议有,tcp, udp, ip4, ip6, unix, unixgram, unixpacket。 都是在Conn的基础上实现各自的方法,主要还是Write(), Read()。
http包
Client里有 Transport 负责建立链接和发送req, CheckRedirect负责当遇到有httpcode是30X跳转的req时,如何处理,默认只检查跳转是否超过10次,即len(via) > 10,Jar如何设置cookie,Timeout是req的超时设置。