Go-结构体(Struct)

结构体(Struct)

struct 是 Go 语言中用于定义一组字段的集合,可以用来组合多个数据类型。struct 类似于其他语言中的类或记录类型,它能够将不同类型的数据组合在一起。

结构体可以进行的操作

  • 定义结构体类型:通过 type 关键字定义结构体类型。
  • 创建结构体实例:可以通过字面值或 new() 函数创建结构体实例。
  • 访问和修改字段:使用点号 . 访问或修改结构体的字段。
  • 匿名字段:可以在结构体中嵌入匿名字段,通常用于组合其他结构体类型。

示例代码

// 定义结构体
type Person struct {
    Name string
    Age  int
}

// 创建结构体实例
p1 := Person{Name: "Alice", Age: 30}
p2 := Person{"Bob", 25}  // 字段顺序初始化

// 访问结构体字段
fmt.Println(p1.Name)   // 输出 "Alice"
fmt.Println(p2.Age)    // 输出 25

// 修改结构体字段
p1.Age = 31
fmt.Println(p1.Age)    // 输出 31

// 使用 new() 创建结构体指针
p3 := new(Person)
p3.Name = "Charlie"
p3.Age = 22
fmt.Println(p3.Name, p3.Age)  // 输出 "Charlie 22"

// 嵌套结构体
type Employee struct {
    Person
    Position string
}

// 创建 Employee 实例并访问字段
e := Employee{Person: Person{Name: "Dave", Age: 40}, Position: "Manager"}
fmt.Println(e.Name)  // 访问嵌入的 Person 字段
fmt.Println(e.Position)

特别注意

  • 值类型struct 是值类型,赋值和传递时会复制整个结构体。如果需要修改原始结构体,可以传递指针。
  • 匿名字段:结构体可以嵌入其他结构体作为匿名字段,这样可以实现字段的组合和继承。
  • 初始化顺序:使用结构体字面值初始化时,必须按定义顺序提供字段值,或者使用 FieldName: value 的方式来初始化。

总结

  • 结构体是组合多个不同类型数据的集合,通过字段来组织数据。
  • 可以创建结构体实例并通过点号 . 访问和修改字段,支持嵌套和组合。
  • 使用匿名字段可以让结构体继承其他结构体的字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值