欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 学习新语言方法总结(二)

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

2024/10/24 16:30:33 来源:https://blog.csdn.net/github_37501169/article/details/139859393  浏览:    关键词:学习新语言方法总结(二)

上一篇介绍了学习语言的数据类型、流程控制,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里面怎么实现了面向对象,了解了基本的使用,后面会深入探讨一下方法,细节的东西可以多动手去搜索了解,单独看一篇文章往往会左眼进右眼出 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com