ソースを参照

精校:9.0-9.1

Unknwon 10 年 前
コミット
e4a460f6d9
3 ファイル変更59 行追加54 行削除
  1. 3 1
      TOC.md
  2. 5 3
      eBook/07.3.md
  3. 51 50
      eBook/09.1.md

+ 3 - 1
TOC.md

@@ -66,4 +66,6 @@
 		- 8.3 [for-range 的配套用法](eBook/08.3.md)
 		- 8.4 [map 类型的切片](eBook/08.4.md)
 		- 8.5 [map 的排序](eBook/08.5.md)
-		- 8.6 [将 map 的键值对调](eBook/08.6.md)
+		- 8.6 [将 map 的键值对调](eBook/08.6.md)
+	- 第9章:[包(package)](eBook/09.0.md)
+		- 9.1 [标准库概述](eBook/09.1.md)

+ 5 - 3
eBook/07.3.md

@@ -77,9 +77,11 @@ for row := range screen {
 
 a) 如果我们写了如下的 for 循环,那么执行完 for 循环后的 item 的值是多少?如果你不确定的话可以测试一下:)
 
-	for _, item := range items {
-		item *= 2
-	}
+```go
+for _, item := range items {
+	item *= 2
+}
+```
 
 b) 如果 a) 无法正常工作,写一个 for 循环让值可以 double。
 

+ 51 - 50
eBook/09.1.md

@@ -1,16 +1,16 @@
 # 9.1 标准库概述
 
-像 fmt,os 等这样具有常用功能的内置包在 Go 语言中有 150 个以上,它们被称为标准库,大部分(一些底层的除外)内置于 Go 本身。记录在: [http://golang.org/pkg/](http://golang.org/pkg/)
+像 `fmt`、`os` 等这样具有常用功能的内置包在 Go 语言中有 150 个以上,它们被称为标准库,大部分(一些底层的除外)内置于 Go 本身。完整列表可以在 [Go Walker](https://gowalker.org/search?q=gorepos) 查看
 
 在贯穿本书的例子和练习中,我们都是用标准库的包。可以通过查阅第 350 页包中的内容快速找到相关的包的实例。这里我们只是按功能进行分组来介绍这些包的简单用途,我们不会深入讨论他们的内部结构。
 
-- unsafe: 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中。
-- syscall-os-os/exec:  
-	- os: 提供给我们一个平台无关性的操作系统功能接口,采用类Unix设计,隐藏了不同操作系统间差异,让不同的文件系统和操作系统对象表现一致。  
-	- os/exec: 提供我们运行外部操作系统命令和程序的方式。  
-	- syscall: 底层的外部包,提供了操作系统底层调用的基本接口。
+- `unsafe`: 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中。
+- `syscall`-`os`-`os/exec`:  
+	- `os`: 提供给我们一个平台无关性的操作系统功能接口,采用类Unix设计,隐藏了不同操作系统间差异,让不同的文件系统和操作系统对象表现一致。  
+	- `os/exec`: 提供我们运行外部操作系统命令和程序的方式。  
+	- `syscall`: 底层的外部包,提供了操作系统底层调用的基本接口。
 
-通过一个Go程序让Linux重启来体现它的能力(通过 `sudo ./6.out` 来执行程序)
+通过一个 Go 程序让Linux重启来体现它的能力。
 
 示例 9.1 [reboot.go](examples/chapter_9/reboot.go):
 
@@ -32,30 +32,30 @@ func main() {
 }
 ```
 
-- 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`):
+- `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`):
 
 ```go
 for e := l.Front(); e != nil; e = e.Next() {
@@ -63,33 +63,34 @@ for e := l.Front(); e != nil; e = e.Next() {
 }
 ```
 
-	- ring: 环形链表。
+	- `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: 实现通过程序运行时自省,让程序操作任意类型的变量。  
+- `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发布的时候并不包含过时或者实验性的包。
+`exp` 包中有许多将被编译为新包的实验性的包。它们将成为独立的包在下次稳定版本发布的时候。如果前一个版本已经存在了,它们将被作为过时的包被回收。然而 Go1.0 发布的时候并不包含过时或者实验性的包。
 
-**练习9.1**
+**练习 9.1**
 
-使用 container/list 包实现一个双向链表,将 101,102,103 放入其中并打印出来。
+使用 `container/list` 包实现一个双向链表,将 101、102 和 103 放入其中并打印出来。
 
-**练习9.2**
+**练习 9.2**
 
-通过使用 unsafe 包中的方法来测试你电脑上一个整型变量占用多少个字节。
+通过使用 `unsafe` 包中的方法来测试你电脑上一个整型变量占用多少个字节。
 
 ## 链接
+
 - [目录](directory.md)
 - 上一节:[包(package)](09.0.md)
 - 下一节:[regexp 包](09.2.md)