【go语言】——方法集

devtools/2025/3/5 2:07:55/

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


http://www.ppmy.cn/devtools/164622.html

相关文章

计算机毕业设计SpringBoot+Vue.js相亲网站(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

关于常规模式下运行VScode无法正确执行“pwsh”问题

前言: pwsh在系统环境中正确配置,且可以运行在cmd, powshell(5.1)--- 都需要在管理员权限下运行 (打开setting) 打开setting.json (在vscode中添加 powershell 7 路径&…

加油站小程序实战05地图加载

目录 1 注册地图应用2 创建小程序3 开发地图组件3.1 组件语法3.2 地图组件 4 最终效果总结 站点信息搭建完毕后,我们就可以进入到小程序部分开发了。因为是多站点管理,我们在进入小程序主页的时候需要加载地图显示所有站点信息。地图选择有多种方案&…

MySQL -操作

博客主页:【夜泉_ly】 本文专栏:【暂无】 欢迎点赞👍收藏⭐关注❤️ 文章目录 创建数据库格式编码集 操控数据库查看数据库修改数据库删除数据库备份与还原 部分表操作创建表查看表修改表 我的版本号:8.0.41-0ubuntu0.22.04.1 创…

搭建iOS逆向开发环境 (下) - 越狱设备与高级工具配置

搭建iOS逆向开发环境 (下) - 越狱设备与高级工具配置 在上一篇文章中,我们介绍了iOS逆向工程的基础环境搭建和核心工具链的安装。正如预告的那样,本篇将继续深入探讨环境搭建的更高级部分,包括越狱设备的配置、远程连接工具、网络分析环境以…

MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频

FFmpeg查看macos系统音视频设备列表 ffmpeg -f avfoundation -list_devices true -i "" 使用摄像头及麦克风同时推送音频及视频流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…

在MacOS上打造本地部署的大模型知识库(一)

一、在MacOS上安装Ollama docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main 最后停掉Docker的ollama,就能在webui中加载llama模…

一个易用的.Net测试模拟库

我们在日常项目开发中,为了解耦都会采用面向接口编程,在开发过程中,可能接口具体实现还未准备好,为了尽早完成自测,这时候就需要来模拟对象来完成测试。 01 项目简介 FakeItEasy是一个.NET平台的简单mocking开源库&a…