目录
概述
结构体是golang中复杂数据类型的一种, 和ts中为对象定义类型时极其相似, 结构体一般包含一组字段并指定类型, 在创建结构体实例时依据指定字段的类型创建即可, 若创建时没有给定字段, 则默认为其类型的零值
初始化结构体
初始化结构体大致分为三种情况, 完整定义, 简要定义, 未定义
- 完整定义 就是把字段名加上
- 简要定义 就是省略字段名 自动按照结构体的字段顺序 依次赋值
- 未定义 则字段就是其类型的0值
package main
import (
"fmt"
)
// 定义一个结构体
type Person struct {
name string
age int
}
func main() {
fmt.Println("完整定义person", Person{name: "张三", age: 18})
fmt.Println("简要定义person", Person{"张三", 18})
fmt.Println("未定义person", Person{})
}
修改结构体
直接通过实例.就能进行修改
package main
import (
"fmt"
)
type Person struct {
name string
age int
}
func main() {
zs := Person{"张三", 20}
fmt.Println("zs", zs)
zs.age = 30
fmt.Println("zs", zs)
}
结构体指针
我们可以创建指向结构体的指针, 正常情况下访问指针对应的值应该这么写 *p , 继而访问结构体的字段 我们需要这么写 (*p).x, 写起来略显麻烦, golang允许我们进行隐式间接访问, 直接p.x就可进行修改
package main
import (
"fmt"
)
type Person struct {
name string
age int
}
func main() {
zs := Person{"张三", 20}
p := &zs
p.name = "张三是法外狂徒"
(*p).age = 18
fmt.Println("zs", zs)
}
总结
- 结构体是复杂数据类型
- 初始化可分为三种方式
- 初始化字段时未填即为零值
- 结构体指针 (*p)可简写为p