在Go语言中,类型特指一系列的值和操作。Go语言的类型起到的作用与众所周知的面向对象的设计语言(Java、C++)有很大的不同,它没有所谓的层次划分、没有类的概念也不存在继承。类型是可以被推断出来的,如:Go使用鸭子类型。
你可以用一个立即数(literal )或指定的类型来定义一个类型变量,以达到类型重用的目的。
自定义类型是由一些小的数据类型整合而成的,如数组、结构体、指针、很熟、接口、片、map和channel。
定义类型的方法:
type 类型名 数据类型
例:
type myint int
定义myint为一个整型类型。如果你想创建一个扩展类型,重新定义之前声明过的类型的数据类型也很常用,实现的函数和方法我们之后再讲。
更为通常的做法,你可以使用某些数据类型组成你自定义的类型:
type point struct {
x, y int
}
这就是一个新的类型结构。
你也可以声明数组类型:
type myarray [20]int
你可以在定义类型时使用自定义类型:
type point struct {
x, y int
}
type arrayPoints [10]point
这就创建了一个point类型的数组。
你可以自行探索其他的类型定义方式。接下来我们要做的是理解Go能用这些类型完成什么工作?
类型主要被用于下面两个方面:
类型检测
和
创建值
类型检测很常见——你只能赋予你定义的变量与之相同类型的值。在编译时编译器会依此对静态类型进行检查。
例:
var c myint
c = "string"
上面的代码编译将不会通过。但下面的代码:
var c myint
c = 1
将会通过编译。因为“c”和“1”都是整型数据。