3.1. 方法与接收器

未匹配的标注

g g study,d d up!

在 Go 中,方法是与结构体相关联的函数。结构体可以定义方法,方法可以访问结构体的字段,并且可以在结构体上调用。与函数类似,方法也具有参数和返回值。方法定义的语法与函数定义类似,但在其名称之前必须包含接收器。

接收器可以是值类型或指针类型。如果接收器是值类型,则方法可以读取结构体的字段,但无法修改它们。如果接收器是指针类型,则方法可以读取和修改结构体的字段。因此,如果需要修改结构体的状态,则需要使用指针接收器。

下面是一个使用值接收器和指针接收器的方法的示例:


type Rectangle struct {
    width  float64
    height float64
}

// 值接收器方法
func (r Rectangle) Area() float64 {
    return r.width * r.height
}

// 指针接收器方法
func (r *Rectangle) Scale(widthFactor float64, heightFactor float64) {
    r.width *= widthFactor
    r.height *= heightFactor
}

方法可以通过指针或值类型调用。如果使用指针类型,则可以在方法内部修改结构体的状态,否则仅可读取结构体的状态。在调用方法时,如果接收器是值类型,则会在调用前复制一份,因此如果需要在方法内部修改结构体的状态,则需要使用指针类型的接收器以避免复制。

欢迎关注公众号上海php自学中心,一起交流。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~