golang的类型声明(type)

x33g5p2x  于2021-11-10 转载在 Go  
字(0.5k)|赞(0)|评价(0)|浏览(347)

通过type关键字来定义一个新的命名类型,它基于一个已有的底层类型。新的类型的结构和行为由底层类型决定,但明确表明了它与底层类型不一样,所以不能混用。

语法:

type name underlying-type

同样,如果类型的name以大写开头,则会导出,可以在包外访问。

可以简单地这样理解:命名类型决定能不能通过编译,而底层类型决定实际运行结果。举例:

// 两种基于 float64 底层类型的新的命名类型
type Celsius float64
type Fahrenheit float64

// 分别声明两个变量
var c1 Celsius = 12
var f1 Fahrenheit = 78

c1 + f1 // 编译失败,因为类型不一样,所以无法操作
// 编译成功,结果是90,因为 Celsius(f1) 做了类型转换,尽管转换后的值的意义与原来的不一样
c1 + Celsius(f1) 
c1 + 34 // 编译成功,执行的结果还是 Celsius 类型

好有意思的类型系统,不过也确实是这样,基本类型和常用的数据结构都有语言本身提供,包括struct类型,程序员可以用来组合不同的属性和方法,进而实现面向对象的特性。剩下的自定义类型,本质上就是个符号了 。

相关文章

微信公众号

最新文章

更多