golang语言和JAVA对比
go语言和Java的对比
1、函数重载
Go上不允许函数重载,必须具有方法和函数的唯一名称。java允许函数重载。
2、速度
go的速度比java快
3、多态
Java默认允许多态。而Go没有。
4、路由配置
Go语言使用HTTP协议进行路由配置
java使用Akka.routing.ConsistentHashingRouter和Akka.routing.ScatterGatherFirstCompletedRouter进行路由配置。
5、可扩展性
Go代码可以自动扩展到多个核心;而,Java并不总是具有足够的可扩展性。
6、类型系统:
JAVA中有两套完全独立的类型系统,一套是值类型系统,byte、int、boolean、char、double另一套是以object类型为根的对象类型系统,Integer,HashMap等。值类型系统希望用object类型引用,则需要装箱。
go语言中多数类型都是值语义,甚至包括一些复合类型如数组(array),结构体(struct)等,并且这些类型都可以有方法。我们可以给任何类型增加新方法。同时Go语言可以通过&获得一个对象的引用如 var b=&a
7、对象传递:
Java中对象的方法会有隐藏的this指针传递
而Go语言中面向对象只是换了一种语法形式来表达,没有隐藏的this指针,即方法施加的目标显示传递,没有被隐藏。
8、初始化:
Java中有默认的构造函数或者用户自定义的构造函数
Go中不需要,可以自定义一个普通的函数。
9、继承:
Java的继承通过extends关键字完成,不支持多继承。
Go语言的继承通过匿名组合完成:基类以Struct的方式定义,子类只需要把基类作为成员放在子类的定义中,并且可以通过调整基类成员的位置改变内存布局,支持多继承。
10、接口:
java中的接口作为不同组件中的契约存在,是强制的。
而GO语言中采用的是非侵入式接口,一个类只需要实现接口要求的所有函数,那我们就说该类实现了该接口。