GO标准库概述
2015-09-18 17:30
323 查看
像 fmt、os 等这样具有常用功能的内置包在 Go 语言中有 150 个以上,它们被称为标准库,大部分(一些底层的除外)内置于 Go 本身。完整列表可以在 Go Walker 查看。 在贯穿本书的例子和练习中,我们都是用标准库的包。可以通过查阅第 350 页包中的内容快速找到相关的包的实例。这里我们只是按功能进行分组来介绍这些包的简单用途,我们不会深入讨论他们的内部结构。 unsafe: 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中。 syscall-os-os/exec: os: 提供给我们一个平台无关性的操作系统功能接口,采用类Unix设计,隐藏了不同操作系统间差异,让不同的文件系统和操作系统对象表现一致。 os/exec: 提供我们运行外部操作系统命令和程序的方式。 syscall: 底层的外部包,提供了操作系统底层调用的基本接口。 通过一个 Go 程序让Linux重启来体现它的能力。 示例 9.1 reboot.go: package main import ( "syscall" ) const LINUX_REBOOT_MAGIC1 uintptr = 0xfee1dead const LINUX_REBOOT_MAGIC2 uintptr = 672274793 const LINUX_REBOOT_CMD_RESTART uintptr = 0x1234567 func main() { syscall.Syscall(syscall.SYS_REBOOT, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART) } archive/tar 和 /zip-compress:压缩(解压缩)文件功能。 fmt-io-bufio-path/filepath-flag: fmt: 提供了格式化输入输出功能。 io: 提供了基本输入输出功能,大多数是围绕系统功能的封装。 bufio: 缓冲输入输出功能的封装。 path/filepath: 用来操作在当前系统中的目标文件名路径。 flag: 对命令行参数的操作。 strings-strconv-unicode-regexp-bytes: strings: 提供对字符串的操作。 strconv: 提供将字符串转换为基础类型的功能。 unicode: 为 unicode 型的字符串提供特殊的功能。 regexp: 正则表达式功能。 bytes: 提供对字符型分片的操作。 index/suffixarray: 子字符串快速查询。 math-math/cmath-math/big-math/rand-sort: math: 基本的数学函数。 math/cmath: 对复数的操作。 math/rand: 伪随机数生成。 sort: 为数组排序和自定义集合。 math/big: 大数的实现和计算。 container-/list-ring-heap: 实现对集合的操作。 list: 双链表。 下面代码演示了如何遍历一个链表(当 l 是 *List): for e := l.Front(); e != nil; e = e.Next() { //do something with e.Value } - `ring`: 环形链表。 time-log: time: 日期和时间的基本操作。 log: 记录程序运行时产生的日志,我们将在后面的章节使用它。 encoding/json-encoding/xml-text/template: encoding/json: 读取并解码和写入并编码 JSON 数据。 encoding/xml:简单的 XML1.0 解析器,有关 JSON 和 XML 的实例请查阅第 12.9/10 章节。 text/template:生成像 HTML 一样的数据与文本混合的数据驱动模板(参见第 15.7 节)。 net-net/http-html:(参见第 15 章) net: 网络数据的基本操作。 http: 提供了一个可扩展的 HTTP 服务器和基础客户端,解析 HTTP 请求和回复。 html: HTML5 解析器。 runtime: Go 程序运行时的交互操作,例如垃圾回收和协程创建。 reflect: 实现通过程序运行时反射,让程序操作任意类型的变量。 exp 包中有许多将被编译为新包的实验性的包。它们将成为独立的包在下次稳定版本发布的时候。如果前一个版本已经存在了,它们将被作为过时的包被回收。然而 Go1.0 发布的时候并不包含过时或者实验性的包。
相关文章推荐
- Hexagon处理器的指令编码
- HDU 2401:Baskets of Gold Coins
- SGU 548 Dragons and Princesses
- hdoj 1542 && poj 1151 Atlantis && poj 1389 Area of Simple Polygons 【线段树 + 离散化 + 扫描线】
- Django 静态文件配置
- google地址
- django 1.8 官方文档翻译:14-1 按需内容处理
- Algorithms—127.Word Ladder
- Django 模板调用
- django signal
- 冒泡排序Bubble sort-golang
- Google浏览器离线安装包下载
- django:TemplateDoesNotExist错误的解决方法
- Django框架开发中避免表单重复提交
- Round A APAC Test 2016 Problem A. Googol String
- Ubuntu 14.04 LTS下安装Google Chrome浏览器
- GoLang学习 -- goroutine使用指南
- django 1.8 官方文档翻译:13-6 分页
- 微软:我家的深度学习超越了人类和Google
- Mac 终端里神秘的 bogon 及解决方法