【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 的方法集和接收者类型之间的关系~

相关推荐
pumpkin845142 小时前
Rust Mock 工具
开发语言·rust
love530love2 小时前
【笔记】在 MSYS2(MINGW64)中安装 python-maturin 的记录
运维·开发语言·人工智能·windows·笔记·python
阿卡蒂奥3 小时前
C# 结合PaddleOCRSharp搭建Http网络服务
开发语言·http·c#
GoGeekBaird5 小时前
69天探索操作系统-第66天:为现代操作系统设计高级实时进程间通信机制
后端·操作系统
泉飒5 小时前
lua注意事项
开发语言·笔记·lua
hao_wujing6 小时前
使用逆强化学习对网络攻击者的行为偏好进行建模
开发语言·网络·php
还是鼠鼠6 小时前
单元测试-概述&入门
java·开发语言·后端·单元测试·log4j·maven
明月看潮生7 小时前
青少年编程与数学 02-020 C#程序设计基础 14课题、程序调试
开发语言·青少年编程·c#·编程与数学
我最厉害。,。7 小时前
接口安全&SOAP&OpenAPI&RESTful&分类特征导入&项目联动检测
后端·restful
抽风的雨6107 小时前
【python深度学习】Day 42 Grad-CAM与Hook函数
开发语言·python·深度学习