【go语言】——方法集

在 Go 语言中,方法集(method set)是指与某个类型(无论是值类型还是指针类型)相关联的方法的集合。

1.值类型的实例与方法集

值类型的实例具有方法集,这些方法集只包含 值接收者 方法。你可以对值类型实例调用它的值接收者方法。如果该值类型的方法是指针接收者(pointer receiver),Go 会自动将其转为指针来调用该方法。

Go 复制代码
type T struct {
    x int
}

// 值接收者方法
func (t T) PrintX() {
    fmt.Println("PrintX:", t.x)
}

// 指针接收者方法
func (t *T) Increment() {
    t.x++
}

func main() {
    t := T{x: 10}
    
    t.PrintX()  // 可以调用值接收者方法
    t.Increment() // Go 会自动将 t 转为指针调用指针接收者方法
    t.PrintX()  // 输出增量后的值
}

输出结果:
PrintX: 10
PrintX: 11

2.指针类型的实例与方法集

指针类型的实例具有方法集,它包含 值接收者 方法和 指针接收者 方法。你可以通过指针类型的实例调用值接收者和指针接收者的方法。如果方法是值接收者,Go 会自动将指针类型实例转为值类型来调用。

Go 复制代码
type T struct {
    x int
}

// 值接收者方法
func (t T) PrintX() {
    fmt.Println("PrintX:", t.x)
}

// 指针接收者方法
func (t *T) Increment() {
    t.x++
}

func main() {
    t := &T{x: 10}
    
    t.PrintX()     // 调用值接收者方法时 Go 会自动将指针转换为值
    t.Increment()  // 调用指针接收者方法
    t.PrintX()     // 输出增量后的值
}

输出结果:
PrintX: 10
PrintX: 11

以上可以帮助你更好地理解 Go 的方法集和接收者类型之间的关系~

相关推荐
小坏讲微服务4 小时前
Spring Cloud Alibaba 整合 Scala 教程完整使用
java·开发语言·分布式·spring cloud·sentinel·scala·后端开发
Kiri霧4 小时前
Scala 循环控制:掌握 while 和 for 循环
大数据·开发语言·scala
过客随尘4 小时前
Spring AOP以及事务详解(一)
spring boot·后端
闲人编程4 小时前
Python的抽象基类(ABC):定义接口契约的艺术
开发语言·python·接口·抽象类·基类·abc·codecapsule
qq_172805594 小时前
Go 语言结构型设计模式深度解析
开发语言·设计模式·golang
武子康4 小时前
大数据-167 ELK Elastic Stack(ELK) 实战:架构要点、索引与排错清单
大数据·后端·elasticsearch
9号达人4 小时前
优惠系统演进:从"实时结算"到"所见即所得",前端传参真的鸡肋吗?
java·后端·面试
wei_shuo4 小时前
openEuler 底座赋能:openGauss 数据库部署与性能实战评测
后端
用户4098170215104 小时前
Python 的基本类型
后端
lkbhua莱克瓦244 小时前
集合进阶8——Stream流
java·开发语言·笔记·github·stream流·学习方法·集合