Go 独树一帜的面向对象特点 | 学习笔记

简介: 快速学习 Go 独树一帜的面向对象特点

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程Go 独树一帜的面向对象特点】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9665


Go 独树一帜的面向对象特点

 

该部分内容较为抽象,但十分重要,通过学习可以深刻理解 Golang 语言与其他语言(如 Java、Python)在面向对象编程过程中的区别。

前面学习了传统编程方法解决问题的缺点,进而学习了结构体的概念,而结构体与面向对象的关系则是本节课学习的主题。一个程序就是一个世界,现实世界存在的物体(人、树、雪人)在程序中均有一定的对象来体现。在面向对象中,称为对象,但本质上也是一个变量。因此,在学习结构体过程中,“创建结构体变量”“创建一个结构体对象”“创建一个对象”这多种描述方式含义相同,也就是说都是创建一个变量,只是变量的类型不同。一般来说,在 Go 语言中,一个变量的类型是结构体类型,可以直接称之为“对象”。

 

一、Golang 语言面向对象编程的特点

Golang 语言面向对象编程与传统的纯度较高的编程语言(Java、donite、PAP)不同,Go 语言做了很多简化。

1. Golang 支持面向对象编程特性

该种说法较为准确,因为 Golang 也支持面向对象编程(Object Oriented Progrmming,OOP),但是与传统的面向对象编程有很大区别,并不是纯粹的面向对象语言。如 JAVA 语言的面向对象编程纯度则很高,没有全局变量的概念,所有的信息都在对象中,但 Golang 中则存在全局变量的含义,还包含有全局函数,并不是一种纯粹的面向对象语言。

2. Golang 基于 struct 实现 OOP 特性

传统面向对象编程中有“类(class)”的概念,而Golang语言中则没有“类”概念,而是使用结构体(struct)这种数据类型来代替“类”的概念,与传统面向对象编程中的类(class)具有同等地位,可以理解为 Golang 是基于 struct 实现 OOP 特性的。

3. Golang 的 OOP 非常简洁

Golang 的面向对象编程,与传统的 OOP 语言有很大区别,它去掉了传统 OOP 语言的继承、方法重载、构建函数和析构函数、隐藏的 this 指针等,而使用别的方式来代替。其中,相较于传统 OOP 语言的继承来说,Golang 语言的面向对象编程并未完全去掉这种语言的继承,而是与之有很大区别,如去除了 extends 关键字等。

4. Golang 仍然有面向对象编程的继承、封装和多态的特性,只是实现的方式与传统 OOP 语言不同

如继承:传统 OOP 语言中,其继承是依靠 extends 关键字来实现的,而 Golang 语言没有了传统 OOP 语言中的 extends 关键字,其继承是通过匿名字段来实现的。

5. Golang 面向对象编程是面向接口编程

Golang 的面向对象编程(OOP)很优雅,因为 OOP 本身就是语言类型系统(type system)的一部分,也就是说,Golang 天然就是一种支持 OOP 的语言,它通过接口(interface)关联,可以降低耦合性,也非常灵活。Golang 语言中,许多内容都是通过巧妙地利用接口来实现的,其耦合度很低,将接口利用到了极致,面向接口编程是 Golang 面向对象编程中最重要的一个特点,因此,可将 Golang 面向对象编程等同于 Golang 面向接口编程。

 

相关文章
|
8月前
|
Java Go C++
Go面向对象是如何实现的?
【2月更文挑战第23天】
89 0
|
8月前
|
监控 安全 Java
Go语言学习笔记(一)
Go语言学习笔记(一)
129 1
Go语言的条件控制语句及循环语句的学习笔记
本文是Go语言的条件控制语句和循环语句的学习笔记,涵盖了if语句、if-else语句、if嵌套语句、switch语句、select语句以及for循环和相关循环控制语句的使用方法。
Go语言的条件控制语句及循环语句的学习笔记
|
4月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
5月前
|
程序员 Go
Go 语言:面向对象还是非面向对象?揭开编程语言的本质
Go 语言:面向对象还是非面向对象?揭开编程语言的本质
|
4月前
|
人工智能 算法 搜索推荐
Go学习笔记-代码调
近年来,人工智能技术飞速发展,Cody作为由Sourcegraph开发的一款AI驱动编码助手,应运而生。它不仅提供代码预测与补全,还能深度理解代码上下文,为开发者提供准确建议,提升编码效率和质量。Cody能识别潜在错误并提出修复建议,缩短调试时间,同时进行智能代码审查,帮助优化代码结构和风格。未来,随着AI技术进步,Cody将不断学习优化,成为开发者不可或缺的伙伴,推动编程领域的创新与发展。
38 0
|
5月前
|
存储 Java Go
Go从入门到放弃之结构体(面向对象)
Go从入门到放弃之结构体(面向对象)
|
7月前
|
设计模式 算法 Java
go语言进阶篇——面向对象(一)
go语言进阶篇——面向对象(一)
go语言进阶篇——面向对象(一)
|
8月前
|
存储 分布式计算 算法
GO学习笔记之表达式
GO学习笔记之表达式
65 1
|
8月前
|
存储 编译器 Go
GO语言学习笔记
GO语言学习笔记
51 1