【笔记】Go语言的结构体

前言

Go语言的结构体学习笔记

定义结构体

  • 在函数外部定义结构体,作用域是全局的
1
2
3
4
type 结构体名 struct {
属性名 数据类型
属性名 数据类型
}

通过结构体名定义结构体变量

先定义变量后赋值

  • 根据结构体所定义的属性单独赋值
1
2
3
4
func main() {
var 变量名 结构体名
变量名.属性名 = 值
}

在定义变量时直接赋值

  • 根据结构体所定义的所有属性直接赋值
1
2
3
func main() {
var 变量名 结构体名 = 结构体名{值, 值}
}
1
2
3
func main() {
变量名 := 结构体名{属性名:值, 属性名:值}
}

通过指针定义结构体变量

先定义变量后赋值

通过new函数

1
2
3
4
5
6
func main() {
var 结构体指针变量 *结构体名 = new(结构体名)
(*结构体指针变量).属性名 = 属性值
// 简写
结构体指针变量.属性名 = 属性值
}

通过取址符

1
2
3
4
5
6
func main() {
var 结构体指针变量 *结构体名 = &结构体名{}
(*结构体指针变量).属性名 = 属性值
// 简写
结构体指针变量.属性名 = 属性值
}

在定义变量时直接赋值

1
2
3
func main() {
var 结构体指针变量 *结构体名 = &结构体名{值, 值}
}
1
2
3
func main() {
var 结构体指针变量 *结构体名 = &结构体名{属性名:值, 属性名:值}
}

为结构体起别名

  • 当通过type关键词为已经定义的结构体再次定义时,相当于为结构体起别名
  • 新得到的数据类型被认为是一种新的数据类型,但是可以通过强制类型转换进行转换
1
2
3
4
5
type Person struct {
...
}

type Prople Person

结构体变量之间的对比

1
2
3
if 结构体变量 == 结构体变量 {

}
1
2
3
if 结构体变量 != 结构体变量 {

}

结构体切片

声明结构体切片

1
var 变量名 []结构体名

为结构体切片赋值

1
变量名 = [数组长度]数据类型{值, 值}

为结构体切片指定元素赋值

1
变量名[数组下标].属性名 = 值

获取结构体切片中元素的值

1
变量名[数组下标].属性名

结构体数组

声明结构体数组

1
var 变量名 [数组长度]结构体名

为结构体数组赋值

1
变量名 = [数组长度]数据类型{值, 值}

为结构体数组指定元素赋值

1
变量名[数组下标].属性名 = 值

获取结构体数组中元素的值

1
变量名[数组下标].属性名

完成

参考文献

哔哩哔哩——喔咔咔耶耶
哔哩哔哩——尚硅谷