标准库包分类

Golang标准库可以大致按其中库的功能进行以下分类:

分类 对应包 描述
输入输出 bufio,fmt,io,log,flag 这个分类包括二进制以及文本格式在屏幕、键盘、文件以及其他设备上的输入输出等,比如二进制文件的读写。
文本处理 encoding,bytes,strings,strconv,text,mime,unicode,regexp,index,path 这个分类包括字符串和文本内容的处理,比如字符编码转换等。
网络 net,http,expvar 这个分类包括开发网络程序所需要的包,比如Socket编程和网站开发等。
系统 os,syscall,sync,time,unsafe 这个分类包含对系统功能的封装,比如对操作系统的交互以及原子性操作等。
数据结构与算法 math,sort,container,crypto,hash,archive,compress,image 整个分类对应各种数据结构和算法的实现封装。
运行时 runtime,reflect,go 这个分类对应获取运行时信息。

常用包介绍

如下介绍Golang语言标准库里使用频率相对较高的一些包。

包名 描述
fmt 它实现了格式化的输入输出操作,其中的fmt.Printf()fmt.Println()是开发者使用最为频繁的函数。
io 它实现了一系列非平台相关的IO相关接口和实现,比如提供了对os中系统相关的IO功能的封装。
bufio 它在io的基础上提供了缓存功能。在具备了缓存功能后,bufio可以比较方便地提供ReadLine之类的操作。
strconv 本包提供字符串与基本数据类型互转的能力。
os 本包提供了对操作系统功能的非平台相关访问接口。接口为Unix风格。提供的功能包括文件操作、进程管理、信号和用户账号等。
sync 它提供了基本的同步原语。在多个goroutine访问共享资源的时候,需要使用sync中提供的锁机制。
flag 它提供命令行参数的规则定义和传入参数解析的功能。绝大部分的命令行程序都需要用到这个包。
encoding/json 本包提供了对JSON的基本支持,比如从一个对象序列化为JSON字符串,或者从JSON字符串反序列化出一个具体的对象等。
http 通过http包,只需要数行代码,即可实现一个爬虫或者一个Web服务器。

完整包列表

Golang语言标准库完整包列表如下(以包名首字母顺序排列)。

父目录 包名 描述
bufio 实现缓冲的I/O
bytes 提供了对字节切片操作的函数
crypto 收集了常见的加密常数
errors 实现了操作错误的函数
Expvar 为公共变量提供了一个标准的接口,如服务器中的运算计数器
flag 实现了命令行标记解析
fmt 实现了格式化输入输出
hash 提供了哈希函数接口
html 实现了一个HTML5兼容的分词器和解析器
image 实现了一个基本的二维图像库
io 提供了对I/O原语的基本接口
log 它是一个简单的记录包,提供最基本的日志功能
math 提供了一些基本的常量和数学函数
mine 实现了部分的MIME规范
net 提供了一个对UNIX网络套接字的可移植接口,包括TCP/IP、UDP域名解析和UNIX域套接字
os 为操作系统功能实现了一个平台无关的接口
path 实现了对斜线分割的文件名路径的操作
reflect 实现了运行时反射,允许一个程序以任意类型操作对象
regexp 实现了一个简单的正则表达式库
runtime 包含与Go运行时系统交互的操作,如控制goroutine的函数
sort 提供对集合排序的基础函数集
strconv 实现了在基本数据类型和字符串之间的转换
strings 实现了操作字符串的简单函数
sync 提供了基本的同步机制,如互斥锁
syscall 包含一个低级的操作系统原语的接口
testing 提供对自动测试Go包的支持
time 提供测量和显示时间的功能
unicode Unicode编码相关的基础函数
archive tar 实现对tar压缩文档的访问
archive zip 提供对ZIP压缩文档的读和写支持
compress bzip2 实现了bzip2解压缩
compress flate 实现了RFC 1951中所定义的DEFLATE压缩数据格式
compress gzip 实现了RFC 1951中所定义的gzip格式压缩文件的读和写
compress lzw 实现了Lempel-Ziv-Welch编码格式的压缩的数据格式
compress zlib 实现了RFC 1950中所定义的zlib格式压缩数据的读和写
container heap 提供了实现heap.Interface接口的任何类型的堆操作
container list 实现了一个双链表
container ring 实现了对循环链表的操作
crypto aes 实现了AES加密(以前的Rijndael),详见美国联邦信息处理标准(197号文)
crypto cipher 实现了标准的密码块模式,该模式可包装进低级的块加密实现中
crypto des 实现了数据加密标准(Data Encryption Standard,DES)和三重数据加密算法法(Triple Data Encryption Algorithm,TDEA)
crypto dsa 实现了FIPS 186-3所定义的数据签名算法(Digital Signature Algorithm)
crypto ecdsa 实现了FIPS 186-3所定义的椭圆曲线数据签名算法(Elliptic Curve Digital Signature Algorithm)
crypto elliptic 实现了素数域上几个标准的椭圆曲线
crypto hmac 实现了键控哈希消息身份验证码(Keyed-Hash Message Authentication Code,HMAC)
crypto md5 实现了RFC 1321中所定义的MD5哈希算法
crypto rand 实现了一个加密安全的伪随机数生成器
crypto rc4 实现了RC4加密,其定义见Bruce Schneier的应用密码学(Applied Cryptography)
crypto rsa 实现了PKCS#1中所定义的RSA加密
crypto sha1 实现了RFC 3174中所定义的SHA1哈希算法
crypto sha256 实现了FIPS 180-2中所定义的SHA224和SHA256哈希算法
crypto sha512 实现了FIPS 180-2中所定义的SHA384和SHA512哈希算法
crypto subtle 实现了一些有用的加密函数,但需要仔细考虑以便正确应用它们
crypto tls 部分实现了RFC 4346所定义的TLS 1.1协议
crypto x509 可解析X.509编码的键值和证书
crypto x509/pkix 包含用于对X.509证书、CRL和OCSP的ASN.1解析和序列化的共享的、低级的结构
database sql 围绕SQL提供了一个通用的接口
database sql/driver 定义了数据库驱动所需实现的接口,同sql包的使用方式
debug dwarf 提供了对从可执行文件加载的DWARF调试信息的访问,这个包对于实现Go语言的调试器非常有价值
debug elf 实现了对ELF对象文件的访问。ELF是一种常见的二进制可执行文件和共享库的文件格式。Linux采用了ELF格式
debug gosym 访问Go语言二进制程序中的调试信息。对于可视化调试很有价值
debug macho 实现了Mach-O对文件的访问
debug pe 实现了对PE(Microsoft Windows Portable Executable)文件的访问
encoding ascii85 实现了ascii85数据编码,用于btoa工具和Adobe’s PostScript以及PDF文档格式
encoding asn1 实现了解析DER编码的ASN.1数据结构,其定义见ITU-T Rec X.690
encoding base32 实现了RFC 4648中所定义的base32编码
encoding base64 实现了RFC 4648中所定义的base64编码
encoding binary 实现了在无符号整数值和字节串之间的转化,以及对固定尺寸值的读和写
encoding csv 可读和写由逗号分割的数值(csv)文件
encoding gob 管理gob流——在编码器(发送者)和解码器(接收者)之间进行二进制值交换
encoding hex 实现了十六进制的编码和解码
encoding json 实现了定义于RFC 4627中的JSON对象的编码和解码
encoding pem 实现了PEM(Privacy Enhanced Mail)数据编码
encoding xml 实现了一个简单的可理解XML名字空间的XML 1.0解析器
go ast 声明了用于展示Go包中的语法树类型
go build 提供了构建Go包的工具
go doc 从一个Go AST(抽象语法树)中提取源代码文档
go parser 实现了一个Go源文件解析器
go printer 实现了对AST(抽象语法树)的打印
go scanner 实现了一个Go源代码文本的扫描器
go token 定义了代表Go编程语言中词法标记以及基本操作标记(printing、predicates)的常量
hash adler32 实现了Adler-32校验和
hash crc32 实现了32位的循环冗余校验或CRC-32校验和
hash crc64 实现了64位的循环冗余校验或CRC-64校验和
hash fnv 实现了Glenn Fowler、Landon Curt Noll和Phong Vo所创建的FNV-1和FNV-1a未加密哈希函数
html template 它自动构建HTML输出,并可防止代码注入
image color 实现了一个基本的颜色库
image draw 提供一些做图函数
image gif 实现了一个GIF图像解码器
image jpeg 实现了一个JPEG图像解码器和编码器
image png 实现了一个PNG图像解码器和编码器
index suffixarray 通过构建内存索引实现的高速字符串匹配查找算法
io ioutil 实现了一些实用的I/O函数
log syslog 提供了对系统日志服务的简单接口
Math big 实现了多精度的算术运算(大数)
Math cmplx 为复数提供了基本的常量和数学函数
Math rand 实现了伪随机数生成器
mime multipart 实现了在RFC 2046中定义的MIME多个部分的解析
net http 提供了HTTP客户端和服务器的实现
net mail 实现了对邮件消息的解析
net rpc 提供了对一个来自网络或其他I/O连接的对象可导出的方法的访问
net smtp 实现了定义于RFC 5321中的简单邮件传输协议(Simple Mail Transfer Protocol)
net textproto 实现了在HTTP、NNTP和SMTP中基于文本的通用的请求/响应协议
net url 解析URL并实现查询转义
net http/cgi 实现了定义于RFC 3875中的CGI(通用网关接口)
net http/fcgi 实现了FastCGI协议
net http/httptest 提供了一些HTTP测试应用
net http/httputil 提供了一些HTTP应用函数,这些是对net/http包中的东西的补充,只不过相对不太常用
net http/pprof 通过其HTTP服务器运行时提供性能测试数据,该数据的格式正是pprof可视化工具需要的
net rpc/jsonrpc 为rpc包实现了一个JSON-RPC ClientCodec和ServerCodec
os exec 可运行外部命令
os user 通过名称和id进行用户账户检查
path filepath 实现了以与目标操作系统定义文件路径相兼容的方式处理文件名路径
regexp syntax 将正则表达式解析为语法树
runtime debug 包含当程序在运行时调试其自身的功能
runtime pprof 以pprof可视化工具需要的格式写运行时性能测试数据
sync atomic 提供了低级的用于实现同步算法的原子级的内存机制
testing iotest 提供一系列测试目的的类型,实现了Reader和Writer标准接口
testing quick 实现了用于黑箱测试的实用函数
testing script 帮助测试使用通道的代码
text scanner 为UTF-8文本提供了一个扫描器和分词器
text tabwriter 实现了一个写筛选器(tabwriter.Writer),它可将一个输入的tab分割的列翻译为适当对齐的文本
text template 数据驱动的模板引擎,用于生成类似HTML的文本输出格式
text template/parse 为template构建解析树
text unicode/utf16 实现了UTF-16序列的的编码和解码
text unicode/utf8 实现了支持以UTF-8编码的文本的函数和常数

学习go语言编程之标准库的更多相关文章

  1. c++ 11开始语言本身和标准库支持并发编程

    c++ 11开始语言本身和标准库支持并发编程,意味着真正要到编译器从语言和标准库层面开始稳定,估计得到17标准出来.14稳定之后的事情了,根据历史经验,新特性的引入到稳定被广泛采用至少要一个大版本的跨 ...

  2. windows下的c语言和linux 下的c语言以及C标准库和系统API

    1.引出我们的问题? 标准c库都是一样的!大家想必都在windows下做过文件编程,在linux下也是一样的函数名,参数都一样.当时就有了疑问,因为我们非常清楚 其本质是不可能一样的,源于这是俩个操作 ...

  3. Python学习笔记011_模块_标准库_第三方库的安装

    容器 -> 数据的封装 函数 -> 语句的封装 类 -> 方法和属性的封装 模块 -> 模块就是程序 , 保存每个.py文件 # 创建了一个hello.py的文件,它的内容如下 ...

  4. 如何轻松学习C语言编程!

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  5. C语言日期时间标准库

    用思维导图整理: 代码: #include <stdio.h> #include <time.h> #include <string.h> int main() { ...

  6. 学习go语言编程系列之helloworld

    1. 下载https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问.通过如下地址下载:https://golangtc.com/download. 2. 安装 ...

  7. c++学习书籍推荐《C标准库(英文版)》下载

    <C标准库(英文版)>是由世界级C语言专家编写的C标准库经典著作,影响了几代程序员. <C标准库(英文版)>集中讨论了C标准库,全面介绍了ANSI/ISO C语言标准的所有库函 ...

  8. 笔记:学习go语言的网络基础库,并尝试搭一个简易Web框架

    在日常的 web 开发中,后端人员常基于现有的 web 框架进行开发.但单纯会用框架总感觉不太踏实,所以有空的时候还是看看这些框架是怎么实现的会比较好,万一要排查问题也快一些. 最近在学习 go 语言 ...

  9. Go语言系列之标准库log

    Go语言内置的log包实现了简单的日志服务.本文介绍了标准库log的基本使用. 使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法.本包也提供了一个预定义的" ...

  10. Go语言系列之标准库fmt

    fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输入内容两大部分. 向外输出 标准库fmt提供了以下几种输出相关函数. Print Print系列函数会将内容 ...

随机推荐

  1. [转帖]Django系列3-Django常用命令

    文章目录 一. Django常用命令概述 二. Django常用命令实例 2.1 help命令 2.2 version 2.3 check 2.4 startproject 2.5 startapp ...

  2. [转帖]iptables 执行清除命令 iptables -F 要非常小心的

    使用 /sbin/iptables -F 要小心,搞不好,你就马上同服务器断开连接了 以下是来自 http://wiki.ubuntu.org.cn/IptablesHowTo 上的说明 可以通过/s ...

  3. nginx 进行目录浏览的简单配置

    1. 公司网络安全不让用vsftpd的匿名网络访问了, 没办法 只能够使用 nginx 通过http协议来处理. 2. 最简单的办法就是另外开一个nginx进程简单设置一下nginx的配置文件 wor ...

  4. linux 查看系统计划任务相关的命令

    最近公司排查计划任务: for i in `ls /etc/cron.d` ; do cat /etc/cron.d/$i |grep -v "#" ; done for i in ...

  5. [知乎]聊一聊threadlocal

    作者:李二狗链接:https://www.zhihu.com/question/341005993/answer/1996544027来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  6. 【笔记】学到几个 golang 代码小技巧

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 从这篇文章学到:10个令人惊叹的Go语言技巧,让你的代码更 ...

  7. 【JS 逆向百例】元素ID定位加密位置,某麻将数据逆向

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 逆向目标 目标:某在线麻将 ...

  8. GIT专业术语教程-转载

    目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1.4.3.分布式版本控制 1.5 ...

  9. 从零开始配置 vim(16)——启动界面配置

    不知道各位小伙伴用过 spacevim 或者 LunarVim 又或者 doomvim 或者其他的什么 vim 配置框架,我们发现他们的启动界面都做的比较好看,而我们默认进入的启动界面则显得比较素了. ...

  10. 策略模式学习,使用go实现策略模式

    策略模式 定义 优点 缺点 使用场景 代码实现 策略模式和工厂模式的区别 参考 策略模式 定义 策略模式定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到客户端的使用 ...