知识卡片
Go不支持泛型的设计取舍
内容
早期Go(本书成书时)和C一样不支持泛型(C++叫模板),这不是遗漏而是取舍的结果:Go刻意不使用预处理器和头文件包含机制,这既是编译速度快的原因之一,也带来一个副作用——泛型编程惯用的模板/宏展开手法失去了赖以生存的预处理阶段。发散:这体现了Go”语言够用就好、不追求特性完备”的务实哲学——放弃一个主流特性不是因为做不到,而是评估这个特性带来的复杂度收益比不划算,直到后续版本的Go才重新引。
参考来源
- 位置:《Go语言程序设计》引言《为什么是Go》(源文件:_epub-src/OEBPS/text00039.html)
- 结论依据:原文在该章节围绕“早期Go(本书成书时)和C一样不支持泛型(C++叫模板),这不是遗漏而是取舍的结果:Go刻意不使用预处理器和头…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:于表达式,也意味着不能用于语意不明的上下文中。例如,我们不能将该操作符用于一个函数的语句中,或者在Go语言中写出类似 i=i++ 这样的代码(虽然我们能够在C和C++中这样做,其中其结果是未定义的)。 赋值通过使用 = 赋值操作符来完成。变量可以使用 = 和一个 var 连接起来创建和赋值。例如, var x int = 5 创建了一个 …