zoukankan      html  css  js  c++  java
  • 周末闲话:GO语言和java语言之间的对比联系

    直接夸一波Go语言

    GO作为编程界的小鲜肉。进年来Go社区非常的活跃,高并发能力无人能及。即具有像Python一样的简洁代码、开发速度,又具有C语言一样的执行效率,优势突出。

    还是从根本去了解Go语言吧

    1、设计Go语言是为了解决当时Google开发遇到的问题:

    • 大量的C++代码,同时又引入了Java和Python
    • 成千上万的工程师
    • 数以万计行的代码
    • 分布式的编译系统
    • 数百万的服务器

    2、Google开发中的痛点:

    • 编译慢
    • 失控的依赖
    • 每个工程师只是用了一个语言里面的一部分
    • 程序难以维护(可读性差、文档不清晰等)
    • 更新的花费越来越长
    • 交叉编译困难

    3、如何解决当前的问题和痛点?

    • Go希望成为互联网时代的C语言。多数系统级语言(包括Java和C#)的根本编程哲学来源于C++,将C++的面向对象进一步发扬光大。但是Go语言的设计者却有不同的看法,他们认为值得学习的是C语言。C语言经久不衰的根源是它足够简单。因此,Go语言也是足够简单。
    • 所以,他们当时设计Go的目标是为了消除各种缓慢和笨重、改进各种低效和扩展性。Go是由那些开发大型系统的人设计的,同时也是为了这些人服务的;它是为了解决工程上的问题,不是为了研究语言设计;它还是为了让我们的编程变得更舒适和方便。
    • 但是结合Google当时内部的一些现实情况,如很多工程师都是C系的,所以新设计的语言一定要易学习,最好是类似C的语言;20年没有出新的语言了,所以新设计的语言必须是现代化的(例如内置GC)等情况。最后根据实战经验,他们向着目标设计了Go这个语言。

    4、Go语言的特色:

    • 没有继承多态的面向对象
    • 强一致类型
    • interface不需要显式声明(Duck Typing)
    • 没有异常处理(Error is value)
    • 基于首字母的可访问特性
    • 不用的import或者变量引起编译错误
    • 完整而卓越的标准库包
    • Go内置runtime(作用是性能监控、垃圾回收等)

    语法对比

    功能JavaGO
    封装 class 关键字组织对象,所有方法和字段都定义在类内 struct 关键字组织对象,struct内可以有字段和方法(方法组织形式不是字节在struct内声明),也允许方法和字段脱离方法之外,这些方法属于包|
    函数重载 允许函数重载 Go上不允许函数重载,必须具有方法和函数的唯一名称
    多态 Java通过类继承或接口来实现多态 Go 只能通过接口来实现多态
    继承 支持 不支持。Go语言的继承通过匿名组合完成,基类以Struct的方式定义,子类只需要把基类作为成员放在子类的定义中
    访问权限 支持public、protected、private、默认等几种权限 通过大小写控制包外可访问还是不可访问
    值引用和地址引用 基础类型是值引用,其他对象是地址引用 所有对象默认是值应用,在对象前加&表示地址引用
    接口 提倡先定义,后实现 Duck typing方式,在使用时抽象出接口,有点先实现后抽象。Go 的 interface 写起来更自由,无需显式实现,只要实现了与 interface 所包含的所有函数签名相同的方法即可。

  • 相关阅读:
    docker微服务部署之:三,搭建Zuul微服务项目
    docker微服务部署之:二、搭建文章微服务项目
    docker微服务部署之:一,搭建Eureka微服务项目
    docker安装Tomcat软件,部署项目
    tomcat运行springboot项目war包
    使用Docker构建jdk1.8镜像
    docker安装MySQL软件
    InvalidKeyException: Illegal key size
    BeanUtils.copyProperties实现po,vo,dto之间的转换
    java集合之HashMap源码解读
  • 原文地址:https://www.cnblogs.com/cxy2020/p/14192890.html
Copyright © 2011-2022 走看看