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

相关推荐
Hetertopia8 分钟前
在Vscode开发QT,完成QT环境的配置
开发语言·qt
胡图蛋.12 分钟前
Spring 中哪些情况下,不能解决循环依赖问题?
java·后端·spring
ChinaRainbowSea22 分钟前
8. Nginx 配合 + Keepalived 搭建高可用集群
java·运维·服务器·后端·nginx
傻啦嘿哟39 分钟前
动态HTTP代理与静态HTTP代理的区别及HTTP代理的常见用途与类型
开发语言·php
清河__41 分钟前
【Go】十八、http 调用服务的编写
windows·http·golang
小志开发1 小时前
Java 多态:代码中的通用设计模式
java·开发语言
索然无味io1 小时前
Python--内置模块和开发规范(上)
开发语言·windows·笔记·python·web安全·网络安全
Asthenia04121 小时前
浅谈配置Seata配置文件:tx-service-group、vgroup-mapping、data-source-proxy-mode傻傻分不清?
后端
August_._1 小时前
【Maven】基于IDEA学习 Maven依赖 与 工程继承、聚合关系
java·windows·后端·学习·maven·intellij-idea
梦兮林夕1 小时前
Go Web开发提速指南:Gin框架入门与热更新
后端·go