周末閑話: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(作用是性能監控、垃圾回收等)

語法對比

 

功能 Java GO
封裝 class 關鍵字組織對象,所有方法和字段都定義在類內 struct 關鍵字組織對象,struct內可以有字段和方法(方法組織形式不是字節在struct內聲明),也允許方法和字段脫離方法之外,這些方法屬於包|
函數重載 允許函數重載 Go上不允許函數重載,必須具有方法和函數的唯一名稱
多態 Java通過類繼承或接口來實現多態 Go 只能通過接口來實現多態
繼承 支持 不支持。Go語言的繼承通過匿名組合完成,基類以Struct的方式定義,子類只需要把基類作為成員放在子類的定義中
訪問權限 支持public、protected、private、默認等幾種權限 通過大小寫控制包外可訪問還是不可訪問
值引用和地址引用 基礎類型是值引用,其他對象是地址引用 所有對象默認是值應用,在對象前加&表示地址引用
接口 提倡先定義,后實現 Duck typing方式,在使用時抽象出接口,有點先實現后抽象。Go 的 interface 寫起來更自由,無需顯式實現,只要實現了與 interface 所包含的所有函數簽名相同的方法即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM