学习go语言编程之标准库
标准库包分类
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 | 实现了对邮件消息的解析 | |
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语言编程之标准库的更多相关文章
- c++ 11开始语言本身和标准库支持并发编程
c++ 11开始语言本身和标准库支持并发编程,意味着真正要到编译器从语言和标准库层面开始稳定,估计得到17标准出来.14稳定之后的事情了,根据历史经验,新特性的引入到稳定被广泛采用至少要一个大版本的跨 ...
- windows下的c语言和linux 下的c语言以及C标准库和系统API
1.引出我们的问题? 标准c库都是一样的!大家想必都在windows下做过文件编程,在linux下也是一样的函数名,参数都一样.当时就有了疑问,因为我们非常清楚 其本质是不可能一样的,源于这是俩个操作 ...
- Python学习笔记011_模块_标准库_第三方库的安装
容器 -> 数据的封装 函数 -> 语句的封装 类 -> 方法和属性的封装 模块 -> 模块就是程序 , 保存每个.py文件 # 创建了一个hello.py的文件,它的内容如下 ...
- 如何轻松学习C语言编程!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- C语言日期时间标准库
用思维导图整理: 代码: #include <stdio.h> #include <time.h> #include <string.h> int main() { ...
- 学习go语言编程系列之helloworld
1. 下载https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问.通过如下地址下载:https://golangtc.com/download. 2. 安装 ...
- c++学习书籍推荐《C标准库(英文版)》下载
<C标准库(英文版)>是由世界级C语言专家编写的C标准库经典著作,影响了几代程序员. <C标准库(英文版)>集中讨论了C标准库,全面介绍了ANSI/ISO C语言标准的所有库函 ...
- 笔记:学习go语言的网络基础库,并尝试搭一个简易Web框架
在日常的 web 开发中,后端人员常基于现有的 web 框架进行开发.但单纯会用框架总感觉不太踏实,所以有空的时候还是看看这些框架是怎么实现的会比较好,万一要排查问题也快一些. 最近在学习 go 语言 ...
- Go语言系列之标准库log
Go语言内置的log包实现了简单的日志服务.本文介绍了标准库log的基本使用. 使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法.本包也提供了一个预定义的" ...
- Go语言系列之标准库fmt
fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输入内容两大部分. 向外输出 标准库fmt提供了以下几种输出相关函数. Print Print系列函数会将内容 ...
随机推荐
- [转帖]Django系列3-Django常用命令
文章目录 一. Django常用命令概述 二. Django常用命令实例 2.1 help命令 2.2 version 2.3 check 2.4 startproject 2.5 startapp ...
- [转帖]iptables 执行清除命令 iptables -F 要非常小心的
使用 /sbin/iptables -F 要小心,搞不好,你就马上同服务器断开连接了 以下是来自 http://wiki.ubuntu.org.cn/IptablesHowTo 上的说明 可以通过/s ...
- nginx 进行目录浏览的简单配置
1. 公司网络安全不让用vsftpd的匿名网络访问了, 没办法 只能够使用 nginx 通过http协议来处理. 2. 最简单的办法就是另外开一个nginx进程简单设置一下nginx的配置文件 wor ...
- linux 查看系统计划任务相关的命令
最近公司排查计划任务: for i in `ls /etc/cron.d` ; do cat /etc/cron.d/$i |grep -v "#" ; done for i in ...
- [知乎]聊一聊threadlocal
作者:李二狗链接:https://www.zhihu.com/question/341005993/answer/1996544027来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- 【笔记】学到几个 golang 代码小技巧
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 从这篇文章学到:10个令人惊叹的Go语言技巧,让你的代码更 ...
- 【JS 逆向百例】元素ID定位加密位置,某麻将数据逆向
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 逆向目标 目标:某在线麻将 ...
- GIT专业术语教程-转载
目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1.4.3.分布式版本控制 1.5 ...
- 从零开始配置 vim(16)——启动界面配置
不知道各位小伙伴用过 spacevim 或者 LunarVim 又或者 doomvim 或者其他的什么 vim 配置框架,我们发现他们的启动界面都做的比较好看,而我们默认进入的启动界面则显得比较素了. ...
- 策略模式学习,使用go实现策略模式
策略模式 定义 优点 缺点 使用场景 代码实现 策略模式和工厂模式的区别 参考 策略模式 定义 策略模式定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到客户端的使用 ...