知识卡片

零值取代未定义状态

专业/工作 · 1371

内容

声明一个变量却不赋值时,Go 不会让它处于未定义或 null 状态,而是自动填入该类型的零值:数值 类型是 0,字符串是空字符串 ““,布尔类型是 false。每种类型都规定了确定的默认值,而不是留一 个”空洞”等运行时报错。发散:这消灭了一整类”忘记初始化导致读到垃圾值/空指针”的 bug 来源, 本质上是把”默认状态该是什么”这个决策从每个开发者手里收回,统一由语言规范给出确定答案—— 减少歧义的成本是。

参考来源

- 位置:《Head First Go语言程序设计》第1章《让我们开始吧:语法基础》(源文件:_epub-src/index_split_000.html) - 结论依据:原文在该章节围绕“声明一个变量却不赋值时,Go不会让它处于未定义或null状态,而是自动填入该类型的零值:数值类型是0,字符串是…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:而不是原始 字符。 与字符串字面量一样,转义序列也可以用在rune字面量中,用来表 示程序代码中难以包含的字符: 布尔值 布尔值只能是两个值中的一个:true或false。它们对于条件语句特 别有用,条件语句只在条件为true或false时才会导致代码段运行。(我 们将在下一章讨论条件语句。) 数字 你还可以直接在代码中定义数字,它甚至比…