当前位置: 首页 > article >正文 go类(结构体)和对象 article 2025/3/4 6:10:20 结构体 结构体定义的函数分为值接收者方法和指针接收者方法 调用方式: 使用值接收者的方法可以通过值或指针调用。使用指针接收者的方法必须通过指针调用。(不对,值对象调用指针方法时会自动转化为指针对象,所以使用指针接收者的方法可以通过值或指针调用) 方法内部对接收者的修改: 如果方法需要修改接收者的值,则必须使用指针接收者。如果方法不需要修改接收者,可以使用值接收者。 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.kler.cn/a/569763.html 相关文章: 派可数据BI接入DeepSeek,开启智能数据分析新纪元 GPT-4.5 力扣785. 判断二分图 黑龙江省地标-DB31/T 862-2021 “一网通办”政务服务中心建设和运行规范 js基础二 我通过AI编程完成了第一个实用程序 避免 Git 文件名大小写出错 CAN总线通信协议学习2——数据链路层之帧格式 服务器项目部署环境配置(windows10) 【大模型系列篇】DeepSeek开源周,解锁AI黑科技 Mac OS Homebrew更换国内镜像源(中科大;阿里;清华) keil主题(vscode风格) leetcode 59. 螺旋矩阵 II 中等 C# 中 Array、ArrayList 和 List 的比较 【前端基础】3、HTML的常用元素(h、p、img、a、iframe、div、span)、不常用元素(strong、i、code、br) 2025年3月2日笔记 DeepSeek 助力 Vue3 开发:打造丝滑的悬浮按钮(Floating Action Button) CentOS 7 日志切割实战:Logrotate 详解与配置指南 Java 8 中,可以使用 Stream API 和 Comparator 对 List 按照元素对象的时间字段进行倒序排序 解决vue中formdata 传值为空 控制台报错SyntaxError - expected expression, got ‘<‘
结构体 结构体定义的函数分为值接收者方法和指针接收者方法 调用方式: 使用值接收者的方法可以通过值或指针调用。使用指针接收者的方法必须通过指针调用。(不对,值对象调用指针方法时会自动转化为指针对象,所以使用指针接收者的方法可以通过值或指针调用) 方法内部对接收者的修改: 如果方法需要修改接收者的值,则必须使用指针接收者。如果方法不需要修改接收者,可以使用值接收者。 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.kler.cn/a/569763.html 相关文章: 派可数据BI接入DeepSeek,开启智能数据分析新纪元 GPT-4.5 力扣785. 判断二分图 黑龙江省地标-DB31/T 862-2021 “一网通办”政务服务中心建设和运行规范 js基础二 我通过AI编程完成了第一个实用程序 避免 Git 文件名大小写出错 CAN总线通信协议学习2——数据链路层之帧格式 服务器项目部署环境配置(windows10) 【大模型系列篇】DeepSeek开源周,解锁AI黑科技 Mac OS Homebrew更换国内镜像源(中科大;阿里;清华) keil主题(vscode风格) leetcode 59. 螺旋矩阵 II 中等 C# 中 Array、ArrayList 和 List 的比较 【前端基础】3、HTML的常用元素(h、p、img、a、iframe、div、span)、不常用元素(strong、i、code、br) 2025年3月2日笔记 DeepSeek 助力 Vue3 开发:打造丝滑的悬浮按钮(Floating Action Button) CentOS 7 日志切割实战:Logrotate 详解与配置指南 Java 8 中,可以使用 Stream API 和 Comparator 对 List 按照元素对象的时间字段进行倒序排序 解决vue中formdata 传值为空 控制台报错SyntaxError - expected expression, got ‘<‘