学习新语言方法总结(二)

devtools/2024/9/23 4:32:20/

上一篇介绍了学习语言的数据类型、流程控制,leetcode上刷几道题目应该对基本代码逻辑有所了解了。这一篇主要来说一下进阶模块:面向对象

OOP思想是编程中重要的一个模块,在各个语言都有大量的广泛运用,废话不多说,直接看go怎么实现

GO的面向对象

谈到面向对象,大脑条件反射的出现三个名词:封装、继承、多态,同样我们可以依葫芦画瓢,带着这三个名词来看看Go是个什么家伙

封装

golang中没有class关键字,通过struct来实现封装的,看代码

type Person struct {Name stringsex  stringage  int
}

一个Person结构体,封装了Name、sex、age属性,首字母大写的属性代表其他包引用的时候可以访问,理解成public,小写理解成private

继承

type Person struct {name stringsex  stringage  int
}type Student struct {Personid   intaddr string
}func main() {// 初始化s1 := Student{Person{"5lmh", "man", 20}, 1, "bj"}fmt.Println(s1.name)
}

golang里面的继承是通过嵌入匿名字段实现,上面示例代码的student结构体嵌入了Person,然后通过给person初始化,就可以打印出name

多态

多态是允许不同类型的对象来执行相同的操作,实现代码的灵活性和扩展性

golang里面是通过接口来实现,直接看代码

package mainimport "fmt"type Shape interface {Area() float64
}type Rectangle struct {width  float64height float64
}func (r Rectangle) Area() float64 {return r.width * r.height
}type Circle struct {radius float64
}func (c Circle) Area() float64 {return 3.14 * c.radius * c.radius
}func GetArea(s Shape) float64 {return s.Area()
}func main() {r := Rectangle{width: 5, height: 3}c := Circle{radius: 4}fmt.Println("Rectangle area:", GetArea(r)) // 输出:Rectangle area: 15fmt.Println("Circle area:", GetArea(c))    // 输出:Circle area: 50.24
}

我们定义了个shape接口,然后创建Rectangle和Circle结构体来实现该接口,通过GetArea方法接收不同的结构体,调用接口里面的Area方法,来实现不同的类型执行相同的操作,也就是多态

通过以上示例,我们知道golang里面怎么实现了面向对象,了解了基本的使用,后面会深入探讨一下方法,细节的东西可以多动手去搜索了解,单独看一篇文章往往会左眼进右眼出 


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

相关文章

【C++11 之强类型枚举enum class/struct 基本结构及应用场景】了解在enum基础上增加了什么

C11 中的强类型枚举(也称为枚举类)通过 enum class 或 enum struct 关键字来定义。它们的基本结构与传统枚举(通过 enum 定义)相似,但在类型安全性和作用域上有所不同。以下是强类型枚举的基本结构代码说明及解析&…

物联网LORA技术-SX1276/SX1277/SX1278-137MHz至1020MHz低功耗远距离收发器

概述: SX1276/SX1277/SX1278 收发器主要采用LORATM 远程调制解调器,用于超长距离扩频通信,抗干扰性强,能够最大限度降低电流消耗。借助升特的LoRaTM 专利调制技术,SX1276/SX1277/SX1278 采用低成本的晶体和物料即可获得…

Web Workers 与 DOM:异步处理与用户界面的和谐共存

在现代Web应用开发中,处理复杂的计算任务与维护流畅的用户界面体验是两大核心挑战。HTML5引入的Web Workers为解决这一难题提供了有效途径,它允许在后台线程执行脚本,从而避免了长时间运行的计算任务阻塞用户界面(UI)线…

【Qt基础教程】事件

文章目录 前言事件简介事件示例总结 前言 在开发复杂的图形用户界面(GUI)应用程序时,理解和掌握事件处理是至关重要的。Qt,作为一个强大的跨平台应用程序开发框架,提供了一套完整的事件处理系统。本教程旨在介绍Qt事件处理的基础知识&#x…

展厅装修时候需要注意哪些细节

1、视觉方面 展厅应该具有很强的视觉冲击力。只有这样不论是领导视察还是合作的客户进行参观的时候才会对展厅产生浓厚的兴趣,同时产生一种亲和力,并直接加深对企业的识别度和记忆度。而个性化设计要跟企业文化相符合。这里,企业标志为寻求个…

Python入门指南:从基础到高级

一、引言 1.1 Python编程语言简介 一、起源与发展 Python由荷兰计算机科学家吉多范罗苏姆(Guido van Rossum)于1990年代初设计,作为ABC语言的一种替代品。 1991年发布了Python的第一个版本(0.9.0)。 2000年发布了Py…

高考志愿填报,如何权衡学校和专业?

高考是人生的分水岭,成绩好的学生能就读更好的大学,获得更多的学习资源,但也有一些同学即使凭借高分数进入了高校,专业的学习过程却不尽如人意,他们也没有将100%的精力投入到专业学习当中。 无论高考结束之后获得了多…

数据资产安全保卫战:构建多层次、全方位的数据安全防护体系,守护企业核心数据资产安全

一、引言 在信息化时代,数据资产已成为企业运营的核心,其安全性直接关系到企业的生存与发展。然而,随着网络技术的飞速发展,数据泄露、黑客攻击等安全威胁日益增多,给企业的数据资产安全带来了严峻挑战。因此&#xf…