《Go题库·6》Go和java比有什么不同?

itmrtan · 2022-06-16 22:21:59 · 6968 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2022-06-16 22:21:59 的主题,其中的信息可能已经有所发展或是发生改变。

面试企业 虾皮、知乎

答案(溪尾)

Go也称为Golang,是一种开源编程语言,Go可以轻松构建可靠,简单和高效的软件。Go是键入的静态编译语言。Go语言提供垃圾收机制,CSP风格的并发性,内存安全性和结构类型。

Java是一种用于一般用途的计算机编程语言,它是基于类的,并发的和面向对象的。Java专门设计为包含很少的实现依赖项。Java应用程序在JVM(Java虚拟机)上运行。它是当今最著名的编程语言之一。Java是一种用于为多个平台开发软件的编程语言。Java应用程序上的编译代码或字节码可以在大多数操作系统上运行,包括Linux,Mac操作系统和Linux。Java的大部分语法都源自C ++和C语言。

go语言和java之间的区别

  • 函数重载

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

    java允许函数重载。

  • 速度

    go的速度比java快

  • 多态

    Java默认允许多态。而Go没有。

  • 路由配置

    Go语言使用HTTP协议进行路由配置;

    java使用Akka.routing.ConsistentHashingRouter和Akka.routing.ScatterGatherFirstCompletedRouter进行路由配置。

  • 可扩展性

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

  • 继承

    Go语言的继承通过匿名组合完成:基类以Struct的方式定义,子类只需要把基类作为成员放在子类的定义中,支持多继承;

    Java的继承通过extends关键字完成,不支持多继承。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

6968 次点击  
加入收藏 微博
17 回复  |  直到 2022-11-19 23:04:49
focusonline
focusonline · #1 · 3年之前

这个回答有点扯淡. 速度, java并不比go慢, 尤其是服务器上充分加热过的代码, 这个已经经过很多人的验证了. 集成, Go那根本就不叫继承, 因为继承是可以is 而不仅仅是has, 很明显目前的go做不到is, java多继承是通过接口实现的.这种也是OOP语言实现多继承的趋势. C++的多继承过于复杂而且容易出问题.

sanrentai
sanrentai · #2 · 3年之前

java是允许在JVM上的程序,go可以直接编译成各平台的可执行程序

AnkoGo123
AnkoGo123 · #3 · 3年之前
focusonlinefocusonline #1 回复

这个回答有点扯淡. 速度, java并不比go慢, 尤其是服务器上充分加热过的代码, 这个已经经过很多人的验证了. 集成, Go那根本就不叫继承, 因为继承是可以is 而不仅仅是has, 很明显目前的go做不到is, java多继承是通过接口实现的.这种也是OOP语言实现多继承的趋势. C++的多继承过于复杂而且容易出问题.

楼1:你的回答更扯淡,为啥一定要继承?没人说是继承,组合这么大个字你看不见吗?垃圾继承!

AnkoGo123
AnkoGo123 · #4 · 3年之前

能实现业务即可,管tm是继承还是组合呢?

AnkoGo123
AnkoGo123 · #5 · 3年之前

再说了,业内普通认为组合好过继承,不然你以为rust也眼瞎?你觉得你比得过人家语言设计者?再说速度,速度不差啥,就冲java jvm这垃圾东西,就足够你读好几本书!要不是出生的早,放现在,没几个人愿意踩几脚!谈都懒得谈!过去了,眼光要长远!生态这东西很虚!

AnkoGo123
AnkoGo123 · #6 · 3年之前

你看rust没什么生态也不阻挡人家年年第一受欢迎,你java再好,那也是养家糊口被逼用而已!

focusonline
focusonline · #7 · 3年之前

3楼 @AnkoGo123 你这样的二货这世道不多见了, 是被生活压力逼疯了么...小学没毕业的你是无法理解为啥OOP和面对对象的编程语言依然统治了业务开发的顶端多年还将继续统治下去.业内普遍认为组合好于继承? 这个业内是你家的吧? java jvm是垃圾? 哈哈哈, 笑死人了, 就算你说得对, 但是你对这样的Jjvm垃圾技术都一无所知更不用说自研一个类似jvm的东西来彰显你不是个垃圾.你扯那么多, 也妨碍不了大多数公司的技术选择和就业方向. 有毛用?孩子你不适合搞开发, 如果你缺钱请去搬砖, 如果不缺, 爱干啥干啥去吧.

Kilin
Kilin · #8 · 3年之前

看楼上两位专家吵这么厉害我给你们评一评:

  1. 语言层次的优化,即用最少的指令完成同样的执行结果;java 的JIT和AOT和汇编相差不大,Go静态编译汇编。执行效率相差不大,虽然数学大数运算Go略有优势,Java运行期异常堆栈很清晰;这一点在互联网行业很难求。
  2. 在代码管理上Java的纯粹面向对象思想优胜,前向兼容遗留下诟病;Go语言后发先至,在并发和内存管理上获胜(主要是GC)
  3. 依赖管理方面,Java的Maven仓库机制获胜;Go的标准库精简,标准库获胜,Java的标准库更新换代多代,还是不行。
  4. 编程思想上,Java的模块化组织,有利于管理;Go的管道感,利于连接;两者持平。
Kilin
Kilin · #9 · 3年之前

对于新一代大学毕业生(2020年后毕业),觉得使用Java很傻比才算正常; JVM本来就是古董。

芭比Q~

中国放个”窜天猴“,老外芯片“连个手”; 建议大家开组马力专研《编译原理》,自己定义一套语言;然后对于不同的CPU开发出自己的运行时,注意:是面向CPU!是面向CPU!是面向CPU!

xwszt
xwszt · #10 · 3年之前
KilinKilin #9 回复

对于新一代大学毕业生(2020年后毕业),觉得使用Java很傻比才算正常; JVM本来就是古董。 芭比Q~ 中国放个”窜天猴“,老外芯片“连个手”; 建议大家开组马力专研《编译原理》,自己定义一套语言;然后对于不同的CPU开发出自己的运行时,注意:是面向CPU!是面向CPU!是面向CPU!

未来的编程是个啥样,很难讲。 1、面向CPU这个说法挺特别的,将来肯定会有各种各样的CPU出来 2、即将毕业的或者刚刚毕业的大学生,建议深入研究一下编译原理,操作系统、计算机硬件原理这三个最基础最核心的课程,这个观点我和Kilin一致; 3、不管Java、GO、C++、Python....什么语言,记住:都是工具!都是工具!都是工具!是为了你的工作服务的,使用熟练是必须的。工作需要什么就用什么,不要被某一种语言困住,正所谓:君子不器。

反过来说一下我的感受:Java现在用起来太重了,也只有大型项目资金充足的厂子玩得起,小规模的还是选择效率高的开发语言更为合适。

EddyLee1010
EddyLee1010 · #11 · 3年之前

打起来 打起来

zoloadang007
zoloadang007 · #12 · 3年之前

之前一直以为前端圈才是真正的“娱乐圈”,没想到服务端圈子更热闹

AnkoGo123
AnkoGo123 · #13 · 2年之前
focusonlinefocusonline #7 回复

3楼 @AnkoGo123 你这样的二货这世道不多见了, 是被生活压力逼疯了么...小学没毕业的你是无法理解为啥OOP和面对对象的编程语言依然统治了业务开发的顶端多年还将继续统治下去.业内普遍认为组合好于继承? 这个业内是你家的吧? java jvm是垃圾? 哈哈哈, 笑死人了, 就算你说得对, 但是你对这样的Jjvm垃圾技术都一无所知更不用说自研一个类似jvm的东西来彰显你不是个垃圾.你扯那么多, 也妨碍不了大多数公司的技术选择和就业方向. 有毛用?孩子你不适合搞开发, 如果你缺钱请去搬砖, 如果不缺, 爱干啥干啥去吧.

搞笑的孩子,说的不就是你自己吗?java你试试生态和rust/go一样的话,你看下谁跟愿意用java? 多人用就代表这门语言优秀的话,那你该滚去学java,php,js了。走好不送!

focusonline
focusonline · #14 · 2年之前
AnkoGo123AnkoGo123 #13 回复

#7楼 @focusonline 搞笑的孩子,说的不就是你自己吗?java你试试生态和rust/go一样的话,你看下谁跟愿意用java? 多人用就代表这门语言优秀的话,那你该滚去学java,php,js了。走好不送!

我又笑了, 扯别的扯不下去了被打脸打得不行了, 又扯开生态了。一个语言如果不好的话, 生态会很好会有很多人用?你这不是妥妥的脑力残障么? C++够优秀了吧?诞生的时间比java古老, 为啥生态不如java呢? 为啥用的人越来越少呢?不用说还有其他的比java古老的语言还不止C++。越low的人越吵吵哪个语言多好多好多先进,天天嚎叫某某语言是世界上最好最先进的语言,因为这些漏货根本不知道技术不是用来炫的而是实实在在是为业务服务的。滚吧,傻孩子,学你的所谓先进技术高大上的东西吧, 做出来的东西一塌糊涂别落个沿街乞讨就不错了。

ethan_soul
ethan_soul · #15 · 2年之前

我认为java非常适合业务开发,框架成熟稳定,生态好,golang的优势在于它的协程,在高并发的优势明显。它两可以互补,没有谁优谁劣

abelli5
abelli5 · #16 · 2年之前

继承和组合,在Java工程中继承用的不多而且经常遇到实际问题,比如修饰符。组合或者重新定义新类更直接一些。但golang不支持继承总觉得有点说不过去

AnkoGo123
AnkoGo123 · #17 · 2年之前
focusonlinefocusonline #14 回复

#13楼 @AnkoGo123 我又笑了, 扯别的扯不下去了被打脸打得不行了, 又扯开生态了。一个语言如果不好的话, 生态会很好会有很多人用?你这不是妥妥的脑力残障么? C++够优秀了吧?诞生的时间比java古老, 为啥生态不如java呢? 为啥用的人越来越少呢?不用说还有其他的比java古老的语言还不止C++。越low的人越吵吵哪个语言多好多好多先进,天天嚎叫某某语言是世界上最好最先进的语言,因为这些漏货根本不知道技术不是用来炫的而是实实在在是为业务服务的。滚吧,傻孩子,学你的所谓先进技术高大上的东西吧, 做出来的东西一塌糊涂别落个沿街乞讨就不错了。

是的呢,java生态好呢,你怎么跑来go了?所以这脸还到底要不要?我是你我就不用go/rust这些东西,用java,php多爽!所以我求求你了呢。。。快滚去用java吧、、、求求了。,快走。55.。。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传