知识卡片
Go内置类型与自定义类型的区别对待
内容
Go语言的设计哲学是效率和实用性优先于概念上的纯粹一致——一个直接体现是内置类型(如切片、映射)和用户自定义类型在语言里享受的待遇并不相同:内置类型可以被编译器深度优化,因为它们的内部结构和访问模式对编译器是完全已知和固定的;用户自定义类型则做不到同等程度的优化,因为编译器不能对任意结构做发散:这解释了为什么Go标准库里切片和映射的方法集合相对固定、不像某些语言的容器那样开放可扩展——语言愿。
参考来源
- 位置:《Go语言程序设计》引言《为什么是Go》(源文件:_epub-src/OEBPS/text00042.html)
- 结论依据:原文在该章节围绕“Go语言的设计哲学是效率和实用性优先于概念上的纯粹一致——一个直接体现是内置类型(如切片、映射)和用户自定义类…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:eadIntFromInt32() 函数基本相同。) 至此,我们完成了对自定义二进制数据的读和写。只要小心选择表示长度的整数符号和大小,并将该长度值写在变长值(如切片)的内容之前,那么使用二进制数据进行工作并不难。 Go语言对二进制文件的支持还包括随机访问。这种情况下,我们必须使用 os.OpenFile() 函数来打开文件(而非 os.…