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

相关推荐
serve the people几秒前
python环境搭建 (十三) httpx和aiohttp
开发语言·python·httpx
Allen_LVyingbo2 分钟前
医疗AI新范式:当数理模型开始“计算”生命,传统大模型面临重构(中)
开发语言·人工智能·python·自然语言处理·重构·知识图谱
时艰.5 分钟前
Java 线程池 — ThreadPoolExecutor
java·开发语言·python
Coder_Boy_6 分钟前
企业级项目高并发监控场景-Spring Boot 集成 Graphite & InfluxDB 实战文档
java·spring boot·后端·系统架构
暖馒7 分钟前
深度剖析串口通讯(232/485)
开发语言·c#·wpf·智能硬件
新新学长搞科研11 分钟前
【CCF主办 | 高认可度会议】第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026)
大数据·开发语言·网络·人工智能·算法·r语言·中国计算机学会
梵刹古音2 小时前
【C语言】 字符数组相关库函数
c语言·开发语言·算法
微风中的麦穗8 小时前
【MATLAB】MATLAB R2025a 详细下载安装图文指南:下一代科学计算与工程仿真平台
开发语言·matlab·开发工具·工程仿真·matlab r2025a·matlab r2025·科学计算与工程仿真
2601_949146538 小时前
C语言语音通知API示例代码:基于标准C的语音接口开发与底层调用实践
c语言·开发语言
开源技术8 小时前
Python Pillow 优化,打开和保存速度最快提高14倍
开发语言·python·pillow