内容简介:Go 声明了许多类型, 我们在第 2 单元已经看到过其中的相当一部分, 但是这些类型有时候并不能充分地描述我们想要持有的值。 声明新类型不仅能够让代码变得更加清晰, 还可以有效地预防错误。例如, 温度作为一种度量值, 它的单位应该是摄氏、华氏或者开尔文。 程序虽然可以使用正如代码清单 13-1 所示, 关键字
Go 声明了许多类型, 我们在第 2 单元已经看到过其中的相当一部分, 但是这些类型有时候并不能充分地描述我们想要持有的值。 声明新类型不仅能够让代码变得更加清晰, 还可以有效地预防错误。
例如, 温度作为一种度量值, 它的单位应该是摄氏、华氏或者开尔文。 程序虽然可以使用 float64
类型作为温度的底层表示, 但是直接把 float64
类型看作等同于温度并不是一个好主意。
正如代码清单 13-1 所示, 关键字 type
可以通过一个名字和一个底层类型来声明新的类型。
代码清单 13-1 摄氏类型: celsius.go
type celsius float64 // 底层类型为 float64 var temperature celsius = 20 fmt.Println(temperature) // 打印出“20”
因为数字字面量 20 跟其他数字字面量一样都是无类型常量, 所以无论是 int
类型、 float64
类型或者其他任何数字类型的变量, 都可以被赋予这个字面量。 与此同时, 虽然 celsius
类型是一种全新的数字类型, 但是由于它与 float64
具有相同的行为和表示, 因此代码清单 13-1 中的赋值操作能够顺利执行。
正如代码清单 13-2 所示, 除赋值之外, 我们还可以对温度执行加法运算, 并把它当作 float64
值那样使用。
代码清单 13-2 与 float64
具有相同行为的摄氏类型: celsius-addition.go
type celsius float64 const degrees = 20 var temperature celsius = degrees temperature += 10
虽然 celsius
类型跟它的底层类型 float64
具有相同的行为, 但因为是一种独特的类型而非第 9 章中提到的类型别名, 所以尝试把 celsius
和 float64
放在一起使用将引发类型不匹配错误:
var warmUp float64 = 10 temperature += warmUp // 无效操作:类型不匹配
加上 warmUp
之前, 程序必须先将它转换为 celsius
类型, 这样加法运算才能够正常执行:
var warmUp float64 = 10 temperature += celsius(warmUp)
通过自定义新类型能够极大地提高代码的可读性和可靠性。 正如代码清单 13-3 所示, 因为 celsius
和 fahrenheit
是两种不同的类型, 所以它们是无法一起执行比较操作和加法运算的。
代码清单 13-3 不同类型是无法混用的
type celsius float64 type fahrenheit float64 var c celsius = 20 var f fahrenheit = 20 if c == f { // 无效操作:celsius 和 fahrenheit 类型不匹配 } c += f // 无效操作:celsius 和 fahrenheit 类型不匹配
Note
本文摘录自《Go语言趣学指南》第 13 章, 你可以通过访问 gpwgcn.com 来获得该书的更多信息。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 不同语言在函数内部定义函数
- 在 Go 语言中定义函数
- 为什么编程语言的都要定义数据类型
- Go 语言函数式编程系列教程(十八) —— 函数篇:函数的基本定义和调用
- Android 自定义 View (04自定义属性)
- Vue自定义组件(简单实现一个自定义组件)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
CSS3实用指南
吉伦瓦特 / 屈超、周志超 / 人民邮电出版社 / 2012-3 / 49.00元
CSS3为Web的视觉样式语言注入了强大的新功能,让设计人员更加轻松自如地设计优美而引人入胜的内容。借助CSS3,不使用图片就可以创建半透明背 景、渐变、阴影等夺人眼球的视觉效果;还可以使用漂亮、独特、非Web安全的字体显示文本;不用Flash就可以创建动画;不用JavaScript就可 以定制适应用户的设备和屏幕尺寸的设计。 本书通过一系列实用且新颖的范例,向读者展示如何实现以上功能和更多......一起来看看 《CSS3实用指南》 这本书的介绍吧!