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
2
3
/etc/mime.types
/etc/apache2/mime.types
/etc/apache/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的超时设置。