数据类型

我们经常看到这样的变量声明:

  1. var (
  2. a int
  3. b string
  4. c float32
  5. )

在Go中所有变量都是有类型的, 比如前面的int, string, float32 这些, 因此在接下来我们将先讲解下Go的基础类型

go在语言成面定义了如下几种基础类型:

  • 整形 12345
  • 浮点型 123.45
  • 复数 123.45i
  • 字符 ‘a’
  • 字符串 “abc”
  • 布尔类型 true, false
  • 枚举类型 iota
  • 自定义类型

整形

类型名 字节宽度 取值范围
int 与平台有关 32 位系统 4 字节,64 位系统 8 字节 有符号整型
uint 与平台有关 32 位 系统 4 字节,64 位 系统 8 字节 无符号整形
int8 1 字节 用 8 位表示的有符号整型 取值范围为:[-128, 127]
int16 2 字节 用 16 位表示的有符号整型 取值范围为:[-32768,32767]
int32 4 字节 用 32 位表示的有符号整型,取值范围为:[-2147483648,2147483647]
int64 8 字节 用 64 位表示的有符号整型,取值范围为:[-9223372036854775808,9223372036854775807]
uint8 1 字节 用 8 位表示的无符号整型,取值范围为:[0,255]
uint16 2 字节 用 16 位表示的无符号整型,取值范围为:[0,65535]
uint32 4 字节 用 32 位表示的无符号整型,取值范围为:[0,4294967295]
uint64 8 字节 用 64 位表示的无符号整型,取值范围为:[0,18446744073709551615]
uintptr 与平台有关 32 位系统 4 字节,64 位系统 8 字节指针值的无符号整型

浮点型

类型名 字节宽度 取值范围
float32 4字节 IEEE-754 32位浮点型数
float64 8字节 IEEE-754 64位浮点型数
complex64 4字节 32 位实数和虚数
complex128 8字节 64 位实数和虚数

别名

类型名 字节宽度 取值范围
byte 1 字节 字节类型,取值范围同 uint8
rune 4 字节 Unicode 码点 取值范围同 uint32

字符串类型

Go 语言内置了字符串类型,使用 string 表示

字面量:

  • 可解析字符串:通过双引号(“)来创建,不能包含多行,支持特殊字符转义序列
  • 原生字符串:通过反引号(`)来创建,可包含多行,不支持特殊字符转义序列

特殊字符:

  • \:反斜线
  • ‘:单引号
  • “:双引号
  • \a:响铃
  • \b:退格
  • \f:换页
  • \n:换行
  • \r:回车
  • \t:制表符
  • \v:垂直制表符
  • \ooo:3 个 8 位数字给定的八进制码点的 Unicode 字符(不能超过\377
  • \uhhhh:4 个 16 位数字给定的十六进制码点的 Unicode 字符
  • \Uhhhhhhhh:8 个 32 位数字给定的十六进制码点的 Unicode 字符
  • \xhh:2 个 8 位数字给定的十六进制码点的 Unicode 字符

布尔类型

布尔类型用于表示真假,类型名为 bool,只有两个值 true 和 false,占用一个字节宽度,零值为 false

  1. var (
  2. IsBoy bool = true
  3. IsGirl bool = true
  4. )

枚举类型

常使用 iota 生成器用于初始化一系列相同规则的常量,批量声明常量的第一个常量使用
iota 进行赋值,此时 iota 被重置为 0,其他常量省略类型和赋值,在每初始化一个常量则
加 1

  1. import (
  2. "fmt"
  3. )
  4. const (
  5. a = iota
  6. b
  7. c
  8. d
  9. )
  10. func main() {
  11. var
  12. fmt.Println(a, b, c, d)
  13. }

自定义类型

在 go 语言中使用 type 声明一种新的类型,语法格式为: type TypeName Formatter

比如我们可以定义自己

  1. type Gender string