go 数据类型

基本数据类型
符合类型:array slice map function pointer struct interface channel
布尔型:bool true/false fmt.Printf("%T, %t", )
数值: int、float32、float64 complex(复数)
字符串 string
派生类型
(a) 指针类型(Pointer)
(b) 数组类型
(c) 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型

数组和切片的区分,主要在于是否确定长度
var variable_name [SIZE] variable_type
传递参数 func getArr(param [10] int)
切片 var identifier []type 不需要定义长度
slice1 := make([]type, len) 使用make关键字
s :=[] int {1,2,3 }
数组转切片 var balance [10] float32
var balance1 [5]int{1, 2, 3, 4, 5}
定义确定长度两种方式,一种是定义的时候直接设置长度,另一种是定义并初始化时确定长度
var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
var b = balance[1:3]

整形、浮点型默认0
字符串: ""

iota
特殊的常量
ota 可以被用作枚举值:

const (
    a = iota
    b = iota
    c = iota
)

第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2
注意点:

  1. 如果中断iota自增,则必须显式恢复。且后续自增值按行序递增
  2. 自增默认是int类型,可以自行进行显示指定类型
  3. 数字常量不会分配存储空间,无须像变量那样通过内存寻址来取值,因此无法获取地址

结构体类型

数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型,结构体有普通结构体和指针结构体。
普通结构体的定义和初始化

type struct_variable_type struct {
   member definition;
   member definition;
   ...
   member definition;
}

一旦定义了结构体类型,它就能用于变量的声明

variable_name := structure_variable_type {value1, value2...valuen}

初始化结构体

// 1.按照顺序提供初始化值
P := person{"Tom", 25}
// 2.通过field:value的方式初始化,这样可以任意顺序
P := person{age:24, name:"Tom"}
// 3.new方式,未设置初始值的,会赋予类型的默认初始值
p := new(person)
p.age=24

结构体指针

var struct_pointer *Books

以上定义的指针变量可以存储结构体变量的地址。查看结构体变量地址,可以将 & 符号放置于结构体变量前

struct_pointer = &Book1;

使用结构体指针访问结构体成员,使用 "." 操作符

你可能感兴趣的:(go 数据类型)