当前位置: 首页 > news >正文

【go语言】——方法集

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

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

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

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

相关文章:

  • 开源工具推荐:Uptime Kuma监控
  • 【Python 3.12.1 颠覆性升级:GIL 解锁与性能飞跃,开启多线程新时代】
  • C++ 将jpg图片变成16位565bmp图片
  • 直播预告|TinyEngine低代码引擎v2.2版本特性介绍
  • LabVIEW基于IMAQ实现直线边缘检测
  • µC/OS-III-事件标志
  • 探索 C 语言:编程世界的基石
  • 在kali linux中kafka的配置和使用
  • mysql深度分页优化方案
  • Redis 同步机制详解
  • 写Oracle表耗时25分钟缩短到23秒——SeaTunnel性能优化
  • 发布策略:蓝绿部署、金丝雀发布(灰度发布)、AB测试、滚动发布、红黑部署的概念与区别
  • CPaintDC的简单介绍
  • 大语言模型学习--本地部署DeepSeek
  • 利用机器学习进行信用风险评估
  • C语言总结目录
  • Moticon智能鞋垫传感器OpenGo:经济实用的运动科学研究与临床评估工具
  • Java 补充 - System.out.println 方法打印彩色文本(通过 ANSI 转义序列方式)
  • LLM大型语言模型(一)
  • 【期末考试应急处理】Linux 历年考试-试题及答案汇总
  • 潍坊网站建设排行/网站推广是做什么的
  • 息壤备案网站客服/2024年2月疫情又开始了吗
  • 如何做伪原创文章网站/北京seo优化诊断
  • web是网站建设与管理吗/杭州正规引流推广公司
  • 琼海做球网站/西安网络优化大的公司
  • 无锡哪家公司做网站/竞价推广代运营公司