知识卡片

类型转换与类型断言的本质区别

专业/工作 · 484

内容

这两者语法相似(都是Type(x)x.(Type)形式)但解决的是完全不同的问题。发散:转换发生在”我知道两种具体类型都存在、只是要变形”的场景,断言发生在”我只有一个抽象的接口值、想确认并拿到它背后的具体类型”的场景——搞混这两者会导致对着接口值写转换语法却编译不通过。

参考来源

- 位置:《Go语言程序设计》第5章《过程式编程》(源文件:_epub-src/OEBPS/text00035.html) - 结论依据:原文在该章节围绕“这两者语法相似(都是`Type(x)`或`x.(Type)`形式)但解决的是完全不同的问题”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:Sunday", "Monday"} var lowPrimes = []int{2, 3, 5, 7, 11, 13, 17, 19} 切片的表达方式为 []Type ,如果我们希望同时完成初始化的话,可以在后面直接跟一个花括号,括号内是一个对应类型的元素列表,并在元素之间用逗号分隔。本来对于这两个切片我们可以用同样的变量声明语法,但我…