From 81a0ef33172cb952fabbb76b03f084364bba4423 Mon Sep 17 00:00:00 2001 From: Hanlei Qin Date: Fri, 15 Dec 2017 14:46:04 +0800 Subject: [PATCH] Update ch12-09.md --- ch12/ch12-09.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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类型参数的函数维护说明文档。 -第三个原因,基于反射的代码通常比正常的代码运行速度慢一到两个数量级。对于一个典型的项目,大部分函数的性能和程序的整体性能关系不大,所以使用反射可能会使程序更加清晰。测试是一个特别适合使用反射的场景,因为每个测试的数据集都很小。但是对于性能关键路径的函数,最好避免使用反射。 +第三个原因,基于反射的代码通常比正常的代码运行速度慢一到两个数量级。对于一个典型的项目,大部分函数的性能和程序的整体性能关系不大,所以当反射能使程序更加清晰的时候可以考虑使用。测试是一个特别适合使用反射的场景,因为每个测试的数据集都很小。但是对于性能关键路径的函数,最好避免使用反射。