Go 的 struct 与方法

Go 用 struct 聚合数据,用方法给类型附着行为,这构成了 Go 面向对象风格的基础表达方式。

#type / concept #status / growing #tech / dev #resource / go

[!info] related notes

Go 的 struct 与方法

一句话定义

struct 是 Go 用来聚合字段的核心复合类型,方法则是附着在类型上的行为定义;两者一起构成了 Go 组织数据和行为的最常见方式。

核心机制 / 工作原理

Go 没有传统类系统,但有:

  • struct 承载数据
  • 方法接收者承载行为

方法写法大致是:

func (u User) DisplayName() string
func (u *User) Rename(name string)

这里的核心点是接收者:

  • 值接收者:通常用于不修改原对象或数据较小的场景
  • 指针接收者:通常用于修改对象状态或避免拷贝

最小例子 / 最小场景

type User struct {
    Name string
}

func (u User) DisplayName() string {
    return u.Name
}

func (u *User) Rename(name string) {
    u.Name = name
}

这个例子体现了 Go 的一个典型分工:

  • 数据结构本身保持朴素
  • 行为通过方法附着

Go 风格里最重要的理解

  • struct 不等于类
  • 方法只是带接收者的函数
  • 组合多个 struct 和接口,通常比搭复杂继承树更符合 Go 风格

边界与易混淆点

  • 方法调用看起来像面向对象语法,但底层思路更接近“函数 + 接收者”
  • 值接收者和指针接收者会影响方法集和接口实现
  • 匿名嵌入常用于组合,但它不是传统继承的直接等价物
创建于 2026/6/20 更新于 2026/6/20