golang 是面向对象的么


本文摘自php中文网,作者(*-*)浩,侵删。

go语言中,虽然没有明确提出面向对象的概念,但是基于已有的语法设计,我们也可以写出面向对象的代码。go语言中的面向对象是借助struct结构体实现的。 (推荐学习:go)

Golang实现面向对象的两个关键类型是struct和interface,其中struct类似C++的普通类类型,interface则对应抽象类类型。

与C++采用public/protected/private指示成员和方法的可见性不同,Golang采用大小写标识可见性,即大写字母开头的成员/方法对外可见,小写开头的则属于类的私有成员,外部不可以直接访问。

此外,Golang与C++在类类型的定义上还有一个重要区别,那就是Golang在struct内只需要声明类的成员变量,而不需要在类定义体内声明或定义所有的方法,方法定义都在struct之外完成。

Golang通过struct定义类的属性,通过在func定义时传入类对象的方式定义类的方法,其中属性和方法的公有/私有属性是通过首字母的大小写决定的。

1

2

3

4

5

type Student struct {

    name  string

    age   int

    major string

}

Golang没有完整实现继承,而是通过组合的方式实现。组合类(子类)可以直接调用被组合类(基类)的公有方法,访问基类的公有属性,子类也可以定义自己的属性,以及实现自己特有的方法。

Golang的设计哲学之一就是简洁,通过大小写区分成员/方法的公有/私有属性,通过组合的方式实现继承,都是简洁哲学的体现。

Golang的interface类型定义的也是一个抽象的基类,它是一组方法的集合,任何完整实现这些方法的类型都被称为该接口的实现。由于抽象与多态是相辅相成的,或者说抽象的目的就是为了实现多态。

以上就是golang 是面向对象的么的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

golang jwt前端怎么验证

【gocn酷go推荐】go 类型转换神器 cast库

golang通用链接池的实现

最新字节跳动面试题与岗位层级,绩效考核制度介绍

golang context 详解

用 go + websocket 快速实现一个 chat 服务

go mod使用

golang中的map是结构体吗

golang的hashmap怎么扩容

开发者的福音,go也支持linq了

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...