在 Go 编程语言中,数据类型用于声明函数和变量。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
Go 语言内置对以下这些基本数据类型的支持:
- 布尔类型:只可以是常量 true 或者 false。一个简单的例子:var b bool = true
- 整型:int8、byte、int16、int、uint、uintptr 等
- 浮点类型:float32、float64
- 复数类型:complex64、complex128
- 字符串:string
- 字符类型:rune
- 错误类型:error
- 派生类型: 包括:
(a) 指针类型(Pointer)
(b) 数组类型
(c) 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型
相较于 PHP,多出了字符类型(单个字符)、错误类型和复数类型,PHP 通过系统级配置函数 error_reporting 定义应用的错误报告级别,不区分单独的字符与字符串类型,Go 还对整型的精度及是否有符号(正数还是负数)做了区分,PHP 则只有一个 int
类型标识整型数据,另外 PHP 通过 float
和 double
来区分浮点型精度,这一点也是 Go 语言 和 PHP 不一样的地方。
此外,Go 语言也支持以下这些复合类型:
- 指针(pointer)
- 数组(array)
- 切片(slice)
- 字典(map)
- 通道(chan)
- 结构体(struct)
- 接口(interface)
PHP 并不支持指针类型,对于数组、切片、字典,PHP 则通过数组类型一网打尽,后面三个类型 PHP 也不支持,通道类型主要用于并发编程,结构体类似 PHP 中的类(class),Go 语言还把接口单独作为一个类型提出来,在进行对象编程的时候会经常用到。