Go 语言核心 36 讲¶
通常把不改变某个程序与外界的任何交互方式和规则,而只改变其内部实现”的代码修改方式,叫做对该程序的重构。
一个切片的底层数组永远不会被替换。为什么?虽然在扩容的时候 Go 语言一定会生成新的底层数组,但是它也同时生成了新的切片。把新的切片作为了新底层数组的窗口,而没有对原切片,及其底层数组做任何改动。在无需扩容时,append函数返回的是指向原底层数组的原切片,而在需要扩容时,append函数返回的是指向新底层数组的新切片。
字典(map)的键类型不能是函数类型、字典类型和切片类型。在键类型的值之间必须可以施加操作符 == 和 !=。因为 map 是 hash 表,而 hash 表的键值需要判等操作。