在任何程序中,我们都会进行类型的声明,这一点任何程序设计语言都是相似的。不同的类型会有不同的含义,比如: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语言赋值的简单介绍,与其它程序设计语言基本类似,我们可以与自己使用的语言进行比较学习,会有更深层次的理解和收获。
如果你有任何问题欢迎与我私信交流~
网友评论