Go怎么能做到不需要“对象”就可以完成多态能做到的事?慕课网上线的新版Go语言有没有提到这一点?

Python016

Go怎么能做到不需要“对象”就可以完成多态能做到的事?慕课网上线的新版Go语言有没有提到这一点?,第1张

go严格上说没有多态,但可以利用接口进行,对于都实现了同一接口的两种对象,可以进行类似地向上转型,并且在此时可以对方法进行多态路由分发。慕课网上线的新版Go语言不仅有提到这一点,还提到了Go在不面对对象的情况下是怎么完成封装和继承的,老师讲得很通透,搭配经典算法、典型例题、微型项目深入讲授go语言。然后还会教学员从零开始搭建分布式爬虫系统,学会用go语言处理复杂项目。

类型 在变量名后边

也可不显式声明类型, 类型推断, 但是是静态语言, name一开始放字符串就不能再赋值数字

方法,属性 分开 方法名首字母大写就是就是外部可调的

面向对象设计的一个重要原则:“优先使用组合而不是继承”

Dog 也是Animal , 要复用Animal 的属性和方法,

只需要在结构体 type 里面写 Animal

入口也是main, 用用试试

多态, 有这个方法就是这个接口的实现, 具体的类 不需要知道自己实现了什么接口,

使用: 在一个函数调用之前加上关键字go 就启动了一个goroutine

创建一个goroutine,它会被加入到一个全局的运行队列当中,

调度器 会把他们分配给某个 逻辑处理器 的队列,

一个逻辑处理器 绑定到一个 操作系统线程 ,在上面运行goroutine,

如果goroutine需要读写文件, 阻塞 ,就脱离逻辑处理器 直接 goroutine - 系统线程 绑定

编译成同名.exe 来执行, 不通过虚拟机, 直接是机器码, 和C 一样, 所以非常快

但是也有自动垃圾回收,每个exe文件当中已经包含了一个类似于虚拟机的runtime,进行goroutine的调度

默认是静态链接的,那个exe会把运行时所需要的所有东西都加进去,这样就可以把exe复制到任何地方去运行了, 因此 生成的 .exe 文件非常大

区别:

1、Go不允许函数重载,必须具有方法和函数的唯一名称;java允许函数重载。

2、Java默认允许多态,Go没有。

3、Go代码可以自动扩展到多个核心;而Java并不总是具有足够的可扩展性。

4、Java不支持多继承,Go支持多继承。

什么是go语言?

Go也称为Golang,是一种编程语言。作为一种开源编程语言,Go可以轻松构建可靠,简单和高效的软件。

Go是键入的静态编译语言。Go语言提供垃圾收集,CSP风格的并发性,内存安全性和结构类型。

什么是java?

Java是一种用于一般用途的计算机编程语言,它是基于类的,并发的和面向对象的。Java专门设计为包含很少的实现依赖项。Java应用程序在JVM(Java虚拟机)上运行。它是当今最着名和最着名的编程语言之一。