当前位置: 首页 > news >正文 go类(结构体)和对象 news 2025/6/28 7:02:57 结构体 结构体定义的函数分为值接收者方法和指针接收者方法 调用方式: 使用值接收者的方法可以通过值或指针调用。使用指针接收者的方法必须通过指针调用。(不对,值对象调用指针方法时会自动转化为指针对象,所以使用指针接收者的方法可以通过值或指针调用) 方法内部对接收者的修改: 如果方法需要修改接收者的值,则必须使用指针接收者。如果方法不需要修改接收者,可以使用值接收者。 type Person struct { name string } func (p Person) Speak1() string { return "Hello, my name is " + p.name } func (p *Person) Speak2() string { return "Hello, my name is " + p.name } pp:=Person{"my_name"} pp.Speak1() // 正确 pp.Speak2() // 错误 实例化 结构体实例化对象方式: 直接通过结构体名和字段名初始化,返回值类型直接new,返回指针类型对于复杂的类,写一个NewStructname() *Structname函数来实例化,类似于构造函数(工厂模式)先声明结构体变量,再逐个字段赋值直接创建匿名结构体的实例,无需提前定义结构体类型,适用于一次性使用的简单数据 继承 go里面的继承其实是组合。 type Animal struct { Name string } type Dog struct { Animal // 嵌入(继承) Animal 类型 Breed string } 继承方式 指针继承值继承 type Animal struct {}func (a *Animal) Speak() {fmt.Println("Animal speaks") }type Cat struct {*Animal }type Cat struct { // 无法调用Speak方法,因为Speak方法是指针接收者方法Animal } 查看全文 http://www.mrgr.cn/news/92935.html 相关文章: 快速排序算法详解 项目准备(flask+pyhon+MachineLearning)- 3 (下:补充——五个模型的理论基础)深度学习——图像分类篇章 DeepSeek如何快速开发PDF转Word软件 Android 应用开发中,证书、签名和加固简述 本地部署SenseVoice(包括离线设备操作) CSS定位详解上 Python 字典与集合:从入门到精通的全面解析 一个py文件搞定mysql查询+Json转换+表数据提取+根据数据条件生成excel文件+打包运行一条龙 【2025.3.02更新】Linkreate wordperssAI插件,定时自动生成文章、图片、长尾关键词、视频,网站AI客服、批量采集文章。新增接入硅基流动图片生成免费API JavaWeb后端基础(3) 【星云 Orbit • STM32F4】06. 串口密码:USART 数据传递 Vscode通过Roo Cline接入Deepseek 【文献阅读】Collective Decision for Open Set Recognition 河南理工XCPC萌新选拔赛 Vue3国际化开发实战:i18n-Ally + vue-i18n@next高效配置教程,项目中文显示 【软考-架构】1.2、指令系统-存储系统-cache python django 蓝桥备赛(六)- C/C++输入输出 【Python 数据结构 1.零基础复习】
结构体 结构体定义的函数分为值接收者方法和指针接收者方法 调用方式: 使用值接收者的方法可以通过值或指针调用。使用指针接收者的方法必须通过指针调用。(不对,值对象调用指针方法时会自动转化为指针对象,所以使用指针接收者的方法可以通过值或指针调用) 方法内部对接收者的修改: 如果方法需要修改接收者的值,则必须使用指针接收者。如果方法不需要修改接收者,可以使用值接收者。 type Person struct { name string } func (p Person) Speak1() string { return "Hello, my name is " + p.name } func (p *Person) Speak2() string { return "Hello, my name is " + p.name } pp:=Person{"my_name"} pp.Speak1() // 正确 pp.Speak2() // 错误 实例化 结构体实例化对象方式: 直接通过结构体名和字段名初始化,返回值类型直接new,返回指针类型对于复杂的类,写一个NewStructname() *Structname函数来实例化,类似于构造函数(工厂模式)先声明结构体变量,再逐个字段赋值直接创建匿名结构体的实例,无需提前定义结构体类型,适用于一次性使用的简单数据 继承 go里面的继承其实是组合。 type Animal struct { Name string } type Dog struct { Animal // 嵌入(继承) Animal 类型 Breed string } 继承方式 指针继承值继承 type Animal struct {}func (a *Animal) Speak() {fmt.Println("Animal speaks") }type Cat struct {*Animal }type Cat struct { // 无法调用Speak方法,因为Speak方法是指针接收者方法Animal } 查看全文 http://www.mrgr.cn/news/92935.html 相关文章: 快速排序算法详解 项目准备(flask+pyhon+MachineLearning)- 3 (下:补充——五个模型的理论基础)深度学习——图像分类篇章 DeepSeek如何快速开发PDF转Word软件 Android 应用开发中,证书、签名和加固简述 本地部署SenseVoice(包括离线设备操作) CSS定位详解上 Python 字典与集合:从入门到精通的全面解析 一个py文件搞定mysql查询+Json转换+表数据提取+根据数据条件生成excel文件+打包运行一条龙 【2025.3.02更新】Linkreate wordperssAI插件,定时自动生成文章、图片、长尾关键词、视频,网站AI客服、批量采集文章。新增接入硅基流动图片生成免费API JavaWeb后端基础(3) 【星云 Orbit • STM32F4】06. 串口密码:USART 数据传递 Vscode通过Roo Cline接入Deepseek 【文献阅读】Collective Decision for Open Set Recognition 河南理工XCPC萌新选拔赛 Vue3国际化开发实战:i18n-Ally + vue-i18n@next高效配置教程,项目中文显示 【软考-架构】1.2、指令系统-存储系统-cache python django 蓝桥备赛(六)- C/C++输入输出 【Python 数据结构 1.零基础复习】