fix typo and optimize.

Change-Id: I7b6938936231fd722814984678ffa30402539fd9
This commit is contained in:
fuyc
2016-08-11 17:08:38 +08:00
parent ed57986ea7
commit 8fda418f3a
33 changed files with 128 additions and 126 deletions

View File

@@ -56,7 +56,7 @@ pT := uintptr(unsafe.Pointer(new(T))) // 提示: 错误!
在编写本文时还没有清晰的原则来指引Go程序员什么样的unsafe.Pointer和uintptr的转换是不安全的参考 [Issue7192](https://github.com/golang/go/issues/7192) . 译注: 该问题已经关闭因此我们强烈建议按照最坏的方式处理。将所有包含变量地址的uintptr类型变量当作BUG处理同时减少不必要的unsafe.Pointer类型到uintptr类型的转换。在第一个例子中有三个转换——字段偏移量到uintptr的转换和转回unsafe.Pointer类型的操作——所有的转换全在一个表达式完成。
当调用一个库函数并且返回的是uintptr类型地址时译注普通方法实现的函数尽量不要返回该类型。下面例子是reflect包的函数reflect包和unsafe包一样都是采用特殊技术实现的编译器可能给它们开了后门比如下面反射包中的相关函数返回的结果应该立即转换为unsafe.Pointer以确保指针指向的是相同的变量。
当调用一个库函数并且返回的是uintptr类型地址时译注普通方法实现的函数尽量不要返回该类型。下面例子是reflect包的函数reflect包和unsafe包一样都是采用特殊技术实现的编译器可能给它们开了后门比如下面反射包中的相关函数返回的结果应该立即转换为unsafe.Pointer以确保指针指向的是相同的变量。
```Go
package reflect