diff --git a/SUMMARY.md b/SUMMARY.md index 7fe80e7..3ef9266 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -113,7 +113,7 @@ * [示例: 编码S表达式](ch12/ch12-04.md) * [通过reflect.Value修改值](ch12/ch12-05.md) * [示例: 解码S表达式](ch12/ch12-06.md) - * [获取结构体字段标识](ch12/ch12-07.md) +  * [获取结构体字段标签](ch12/ch12-07.md) * [显示一个类型的方法集](ch12/ch12-08.md) * [几点忠告](ch12/ch12-09.md) * [底层编程](ch13/ch13.md) diff --git a/ch12/ch12-07.md b/ch12/ch12-07.md index c0fe40b..a58f8c4 100644 --- a/ch12/ch12-07.md +++ b/ch12/ch12-07.md @@ -1,6 +1,6 @@ -## 12.7. 获取结构体字段标识 +## 12.7. 获取结构体字段标签 -在4.5节我们使用构体成员标签用于设置对应JSON对应的名字。其中json成员标签让我们可以选择成员的名字和抑制零值成员的输出。在本节,我们将看到如果通过反射机制类获取成员标签。 +在4.5节我们使用构体成员标签用于设置对应JSON对应的名字。其中json成员标签让我们可以选择成员的名字和抑制零值成员的输出。在本节,我们将看到如何通过反射机制类获取成员标签。 对于一个web服务,大部分HTTP处理函数要做的第一件事情就是展开请求中的参数到本地变量中。我们定义了一个工具函数,叫params.Unpack,通过使用结构体成员标签机制来让HTTP处理函数解析请求参数更方便。 diff --git a/ch12/ch12-09.md b/ch12/ch12-09.md index 7dceca9..1c6ae4b 100644 --- a/ch12/ch12-09.md +++ b/ch12/ch12-09.md @@ -16,5 +16,5 @@ fmt.Printf("%d %s\n", "hello", 42) // "%!d(string=hello) %!s(int=42)" 避免使用反射的第二个原因是,即使对应类型提供了相同文档,但是反射的操作不能做静态类型检查,而且大量反射的代码通常难以理解。总是需要小心翼翼地为每个导出的类型和其它接受interface{}或reflect.Value类型参数的函数维护说明文档。 -第三个原因,基于反射的代码通常比正常的代码运行速度慢一到两个数量级。对于一个典型的项目,大部分函数的性能和程序的整体性能关系不大,所以使用反射可能会使程序更加清晰。测试是一个特别适合使用反射的场景,因为每个测试的数据集都很小。但是对于性能关键路径的函数,最好避免使用反射。 +第三个原因,基于反射的代码通常比正常的代码运行速度慢一到两个数量级。对于一个典型的项目,大部分函数的性能和程序的整体性能关系不大,所以当反射能使程序更加清晰的时候可以考虑使用。测试是一个特别适合使用反射的场景,因为每个测试的数据集都很小。但是对于性能关键路径的函数,最好避免使用反射。 diff --git a/ch5/ch5-04-1.md b/ch5/ch5-04-1.md index 1a5a625..34c00fc 100644 --- a/ch5/ch5-04-1.md +++ b/ch5/ch5-04-1.md @@ -11,7 +11,7 @@ if err != nil{ } ``` -当对html.Parse的调用失败时,findLinks不会直接返回html.Parse的错误,因为缺少两条重要信息:1、错误发生在解析器;2、url已经被解析。这些信息有助于错误的处理,findLinks会构造新的错误信息返回给调用者: +当对html.Parse的调用失败时,findLinks不会直接返回html.Parse的错误,因为缺少两条重要信息:1、发生错误时的解析器(html parser);2、发生错误的url。因此,findLinks构造了一个新的错误信息,既包含了这两项,也包括了底层的解析出错的信息。 ```Go doc, err := html.Parse(resp.Body)