Skip to content

数据类型

  • 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

布尔型

  • 布尔型 值只有两种:true 和 false。
go
var a bool = false
var b bool = true

数字类型

go
// 整数类型 默认值0
var num0 int // 32位系统为int32 64位系统为int64
var num1 int8 // 长度为-2^7~2^7-1 (-128-127)
var num2 int16 // 长度为-2^15~2^15-1 (-32768-32767)
var num3 int32 // 长度为-2^31~2^31-1
var num4 int64 // 长度为-2^63~2^63-1

// 无符号整型 默认值0
var num5 uint // 32位系统为uint32 64位系统为uint64
var num6 uint8 // 长度为0~2^8-1 (0-255)

// 特殊数字
var num7 rune // 类似 int32 Ascii码
var num8 byte // 类似 uint8 Ascii码

// 浮点类型
var f0 float32 // 长度为32位
var f1 float64 // 长度为64位

字符串类型

go
// 字符类型 默认值 "" 空
var str1 byte = "a"
// 转义字符
var str2 byte= "\n"
// 字符串类型 是不可变的,一旦定义好了,就不可变化,但是可以拼接
var s1 string = "你好!"

派生类型

  • 指针类型
  • 数组类型
  • 切片类型(slice)
  • 结构化类型(struct)
  • Map 类型
  • Channel 类型
  • 函数类型
  • 接口类型(interface)
go
// 指针类型:定义一个指针,指向一个字符串
var str string = "abc";
var ptr *string = &str

// 数组类型:定义一个长度为5的数组,元素类型为int
var arr [5]int = [5]int{1, 2, 3, 4, 5}

// 切片类型:定义一个长度为5的切片,元素类型为int
var slice []int = []int{1, 2, 3, 4, 5}

// 结构体类型:定义一个结构体,包含两个字段name和age
type Person struct {
    name string
    age  int
}

// Map类型:定义一个Map,key为string,value为int
var m map[string]int = make(map[string]int)

// 通道类型:定义一个通道,元素类型为int
var ch chan int = make(chan int)

// 函数类型:定义一个函数,参数为int,返回值为int
var func1 :=func add(a int) int {
    return a + 1
}

// 接口类型:定义一个接口,包含一个方法say()
type Animal interface {
    say()
}