Go语言类型之声明

137 阅读2分钟

在任何程序中,我们都会进行类型的声明,这一点任何程序设计语言都是相似的。不同的类型会有不同的含义,比如:int类型可以用来表示循环的索引、时间戳、文件描述符、月份等;float64可以用来表示速度、或者温度;string类型的可以用来表示文件名称、姓名、实体的描述等;

在Go语言中,使用type声明定义一个新的命名类型,该类型一定是底层已有的类型,如下所示:

 type name underlying-type

类型的声明通常出现在包级别,这里命名的类型在整个包中可见,如果该类型的首字母大写,则其他包也可以访问它。

下面我们一起来看个例子:

 package main
 import "fmt"
 ​
 type Celsius float64
 type Fahrenheit float64
 ​
 const (
     AbsoluteZeroc Celsius = -273.15
     FreezingC Celsius = 0
     BoilingC Celsius = 100
 )
 ​
 func CToF(c Celsius) Fahrenheit{
     return Fahrenheit(c*9/5 + 32)
 }
 ​
 func FToC(f Fahrenheit) Celsius{
     return Celsius((f-32) *5 /9)
 }

在上面的示例中,我们定义了两个类型---Celsius(摄氏温度)和Fahrenheit(华氏温度),这是两种不同的计量温度单位。虽然它们使用了相同的底层float64类型,但是含义不同就不能进行直接的比较,我们必须要进行类型转换之后才能进行比较。

数字类型间的转换、字符串和slice之间的转换也是可以的,例如:浮点数转化为整型会丢失小数部分,从字符串转换为字节([]byte)会分配一份字符串数据副本。

命名类型的底层类型决定了它的结构和表达方式,以及它支持的内部操作集合,这些内部操作与直接使用底层类型的情况相同。

好啦,以上就是Go语言赋值的简单介绍,与其它程序设计语言基本类似,我们可以与自己使用的语言进行比较学习,会有更深层次的理解和收获。

如果你有任何问题欢迎与我私信交流~

\