Fix error building with pandoc.

This commit is contained in:
jxskiss
2016-09-28 02:09:32 +08:00
parent f7e4126370
commit 6be131ac34
15 changed files with 28 additions and 28 deletions

View File

@@ -14,18 +14,18 @@ Sizeof函数返回的大小只包括数据结构中固定的部分例如字
由于地址对齐这个因素一个聚合类型结构体或数组的大小至少是所有字段或元素大小的总和或者更大因为可能存在内存空洞。内存空洞是编译器自动添加的没有被使用的内存空间用于保证后面每个字段或元素的地址相对于结构或数组的开始地址能够合理地对齐译注内存空洞可能会存在一些随机数据可能会对用unsafe包直接操作内存的处理产生影响
类型 | 大小
----------------------------- | ----
bool | 1个字节
intN, uintN, floatN, complexN | N/8个字节(例如float64是8个字节)
int, uint, uintptr | 1个机器字
*T | 1个机器字
string | 2个机器字(data,len)
[]T | 3个机器字(data,len,cap)
map | 1个机器字
func | 1个机器字
chan | 1个机器字
interface | 2个机器字(type,value)
类型 | 大小
------------------------------- | -----------------------------
`bool` | 1个字节
`intN, uintN, floatN, complexN` | N/8个字节(例如float64是8个字节)
`int, uint, uintptr` | 1个机器字
`*T` | 1个机器字
`string` | 2个机器字(data,len)
`[]T` | 3个机器字(data,len,cap)
`map` | 1个机器字
`func` | 1个机器字
`chan` | 1个机器字
`interface` | 2个机器字(type,value)
Go语言的规范并没有要求一个字段的声明顺序和内存中的顺序是一致的所以理论上一个编译器可以随意地重新排列每个字段的内存位置虽然在写作本书的时候编译器还没有这么做。下面的三个结构体虽然有着相同的字段但是第一种写法比另外的两个需要多50%的内存。

View File

@@ -1,4 +1,4 @@
# 第十三章 底层编程
# 第十三章 底层编程
Go语言的设计包含了诸多安全策略限制了可能导致程序运行出错的用法。编译时类型检查可以发现大多数类型不匹配的操作例如两个字符串做减法的错误。字符串、map、slice和chan等所有的内置类型都有严格的类型转换规则。