在Go语言中,type
关键字用于定义新的类型。Go语言支持多种内置类型,以及通过结构体(struct)、接口(interface)、命名类型(named type)和类型别名(type alias)等方式创建自定义类型。以下是一些常见的Go语言类型:
-
基本类型:
- 整数类型:
int8
,int16
,int32
,int64
,uint8
,uint16
,uint32
,uint64
,uintptr
- 浮点类型:
float32
,float64
- 复数类型:
complex64
,complex128
- 字符类型:
byte
,rune
(int32
的别名,用于表示单个Unicode字符) - 布尔类型:
bool
- 字符串类型:
string
- 整数类型:
-
引用类型:
- 数组:
[len]T
,其中T
是元素类型,len
是数组长度。数组的长度在声明时确定且不可变。 - 切片:
[]T
,其中T
是元素类型。切片是对数组的一个连续片段的引用,长度可变。 - 映射:
map[K]V
,其中K
是键类型,V
是值类型。映射是一种无序的键值对集合。 - 通道:
chan T
,其中T
是元素类型。通道用于在不同Goroutine之间进行数据传递。 - 函数:
func(args) (results)
,表示一个函数类型,接受参数列表args
并返回结果列表results
。
- 数组:
-
结构体类型:
- 结构体是一种自定义的复合类型,由字段名和字段类型组成。例如:
type Person struct { Name string Age int }
结构体字段在结构体中按声明顺序排列,并且可以通过点操作符(
.
)访问。 - 结构体是一种自定义的复合类型,由字段名和字段类型组成。例如:
-
接口类型:
- 接口是一种抽象类型,定义了一组方法的集合。任何实现了这些方法的类型都隐式地实现了该接口。例如:
type Shape interface { Area() float64 Perimeter() float64 }
接口类型可以用于类型断言和类型判断。
- 接口是一种抽象类型,定义了一组方法的集合。任何实现了这些方法的类型都隐式地实现了该接口。例如:
-
命名类型:
- 命名类型是通过
type
关键字为已存在的类型定义一个新名称。例如:type MyInt int
命名类型可以用于为现有类型添加新的方法或属性。
- 命名类型是通过
-
类型别名:
- 类型别名是通过
type
关键字为已存在的类型定义一个新的名称和/或新的类型签名。例如:type MySlice []int
类型别名可以用于简化复杂类型的表示或创建具有不同名称但相同底层类型的类型。
- 类型别名是通过
此外,Go语言还支持枚举(enum)、联合类型(union type)等高级类型特性,但这些特性在标准Go语言中并未直接提供,而是通过其他方式(如使用常量、结构体或第三方库)来实现。