go语言没有面向对象 go 对象

Golang入门到项目实战 | golang方法

go语言没有面向对象的特性,也没有类对象的概念。但是,可以使用结构体来模拟这些特性,我们都知道面向对象里面有类方法等概念。我们也可以声明一些方法,属于某个结构体。

创新互联建站主要从事成都做网站、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务策勒,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

Go中的方法,是一种特殊的函数,定义域struct之上(与struct关联、绑定),被称为struct的接受者(receiver)。通俗的讲,方法就是有接收者的函数。

语法格式如下:

mytype:定义一个结构体

recv:接受该方法的结构体(receiver)

my_method:方法名称

para:参数列表

return_type:返回值类型

从语法格式可以看出,一个方法和一个函数非常相似,多了一个接受类型。

实例

运行结果

go语言是面向对象的还是面向过程的?

两者都不算吧,go语言没有明显的倾向,可能由于语言的设计者都是牛人的原因,他们更倾向于让编程者去考虑该怎么去用它。也许它的特色就是灵活吧。你可以用它实现面向对象,但它本身不支持面向对象的语义。

Golang入门到项目实战 | golang嵌套结构体

go语言没有面向对象编程思想,也没有继承关系,但是可以通过结构体嵌套来实现这种效果。

下面通过实例演示如何实现结构体嵌套,假如有一个人Person结构体,这个人还养了一个宠物Dog结构体

下面我们来看一下:

Dog结构体

Person结构体

访问它们

运行结果

为什么要使用 Go 语言?Go 语言的优势在哪里

1. 保留但大幅度简化指针

Go语言保留着C中值和指针的区别,但是对于指针繁琐用法进行了大量的简化,引入引用的概念。所以在Go语言中,你几乎不用担心会因为直接操作内寸而引起各式各样的错误。

2. 多参数返回

还记得在C里面为了回馈多个参数,不得不开辟几段指针传到目标函数中让其操作么?在Go里面这是完全不必要的。而且多参数的支持让Go无需使用繁琐的exceptions体系,一个函数可以返回期待的返回值加上error,调用函数后立刻处理错误信息,清晰明了。

3. Array,slice,map等内置基本数据结构

如果你习惯了Python中简洁的list和dict操作,在Go语言中,你不会感到孤单。一切都是那么熟悉,而且更加高效。如果你是C++程序员,你会发现你又找到了STL的vector 和 map这对朋友。

4. Interface

Go语言最让人赞叹不易的特性,就是interface的设计。任何数据结构,只要实现了interface所定义的函数,自动就implement了这个interface,没有像Java那样冗长的class申明,提供了灵活太多的设计度和OO抽象度,让你的代码也非常干净。千万不要以为你习惯了Java那种一条一条加implements的方式,感觉还行,等接口的设计越来越复杂的时候,无数Bug正在后面等着你。

同时,正因为如此,Go语言的interface可以用来表示任何generic的东西,比如一个空的interface,可以是string可以是int,可以是任何数据类型,因为这些数据类型都不需要实现任何函数,自然就满足空interface的定义了。加上Go语言的type assertion,可以提供一般动态语言才有的duck typing特性, 而仍然能在compile中捕捉明显的错误。

5. OO

Go语言本质上不是面向对象语言,它还是过程化的。但是,在Go语言中, 你可以很轻易的做大部分你在别的OO语言中能做的事,用更简单清晰的逻辑。是的,在这里,不需要class,仍然可以继承,仍然可以多态,但是速度却快得多。因为本质上,OO在Go语言中,就是普通的struct操作。

6. Goroutine

这个几乎算是Go语言的招牌特性之一了,我也不想多提。如果你完全不了解Goroutine,那么你只需要知道,这玩意是超级轻量级的类似线程的东西,但通过它,你不需要复杂的线程操作锁操作,不需要care调度,就能玩转基本的并行程序。在Go语言里,触发一个routine和erlang spawn一样简单。基本上要掌握Go语言,以Goroutine和channel为核心的内存模型是必须要懂的。不过请放心,真的非常简单。

7. 更多现代的特性

和C比较,Go语言完全就是一门现代化语言,原生支持的Unicode, garbage collection, Closures(是的,和functional programming language类似), function是first class object,等等等等。

看到这里,你可能会发现,我用了很多轻易,简单,快速之类的形容词来形容Go语言的特点。我想说的是,一点都不夸张,连Go语言的入门学习到提高,都比别的语言门槛低太多太多。在大部分人都有C的背景的时代,对于Go语言,从入门到能够上手做项目,最多不过半个月。Go语言给人的感觉就是太直接了,什么都直接,读源代码直接,写自己的代码也直接。

go语言中的面向对象

类的成员函数 有时也称为 方法 。因此,方法可以认为是传统面向对象中 类的成员函数 。不同的是,go中方法可以绑定到任何类型上,但是成员函数只能属于类。

用来描述主调方法,就像向对象发送消息。

不允许本身是指针的类型进行方法声明。

与继承的不同,组合中的顺序也是无意义的。

参考一等函数,方法做变量

首字母大小写,要封装一个对象,只能通过结构体。


网页标题:go语言没有面向对象 go 对象
文章起源:http://azwzsj.com/article/hpchch.html