1.golang基础认识

1.Go语言在语言级别支持协程,叫goroutine

那什么是协程呢?

<协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用>

协程更适合于用来实现彼此熟悉的程序组件,如合作式多任务,迭代器,无限列表和管道。

(一个程序可以包含多个协程,可以对比与一个进程包含多个线程,因而下面我们来比较协程和线程。我们知道多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。)

2.协程之间没有互斥与同步!

在执行体之间的消息传递中,互斥与同步存在与线程

<在Go语言中内置了消息队列的支持,只不过它叫通道(channel)。两 个goroutine之间可以通过通道来进行交互。 >从而不需要互斥与同步。

3.Go语言支持类、类成员方法、类的组合,但反对继承,反对虚函数(virtual function) 和虚函数重载。

确切地说,Go也提供了继承,只不过是采用了组合的文法来提供。

4.Go语言也放弃了构造函数(constructor)和析构函数(destructor)。

5.Go语言中的 接口(interface)与其他语言最大的一点区别是它的非侵入性。

在Go语言中,实现类的时候无需从接口派生。

Go语言的非侵入式接口,看似只是做了很小的文法调整,实则影响深远。 

其一,Go语言的标准库再也不需要绘制类库的继承树图。你只需要知道这个类实现了哪些方法,每个方法是啥含义就足够了。

其二,不用再纠结接口需要拆得多细才合理。

其三,不用为了实现一个接口而专门导入一个包,而目的仅仅是引用其中的某个接口的定义。 在Go语言中,只要两个接口拥有相同的方法列表,那么它们就是等同的,可以相互赋值。

6.支持匿名函数与闭包

7.go语言为静态类型语言

可以编译时检查错误



猜你喜欢

转载自blog.csdn.net/qq_41723615/article/details/80260534