自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java開發(fā)人員為什么要選擇Go?

開發(fā) 后端
我三年前開始使用Go。 那時(shí),Go已經(jīng)存在了十多年。 感謝以下三個(gè)讓Go出現(xiàn)在我們面前的優(yōu)秀程序員。

 我三年前開始使用Go。 那時(shí),Go已經(jīng)存在了十多年。 感謝以下三個(gè)讓Go出現(xiàn)在我們面前的優(yōu)秀程序員。

 

[[330822]]

Go是一種開源編程語(yǔ)言,可輕松構(gòu)建簡(jiǎn)單,可靠和高效的軟件。 — golang.org

我是Java程序員已有十多年了。 直到今天,我的工作不能離開Java,但我會(huì)越來越選擇使用Go解決問題,甚至建議同事在工作中使用Go,但是人們會(huì)互相鼓勵(lì)使用Java嗎? 我不這么認(rèn)為!

為什么要使用Go?

由于從Java到Java的多平臺(tái)垃圾收集,一旦我們從C轉(zhuǎn)到Java,現(xiàn)在我們也被健全的Java生態(tài)環(huán)境所包圍。 盡管如此,容器的出現(xiàn),Docker和Kubernetes的興起,突然讓人們發(fā)現(xiàn)Go,您需要了解它,然后喜歡它,然后放棄Java。

 

它不會(huì)那么夸張,但是您將再擁有一個(gè)工具,一個(gè)非常方便的工具。

我對(duì)使用Go的回答很簡(jiǎn)單:簡(jiǎn)單性和速度

接下來,我簡(jiǎn)要地談?wù)凣o的優(yōu)勢(shì)以及為什么要學(xué)習(xí)Go。

簡(jiǎn)潔與速度

Go和Java有很多共同點(diǎn):

  • C族(命令,大括號(hào))
  • 靜態(tài)類型
  • 垃圾收集
  • 內(nèi)存安全(零引用,運(yùn)行時(shí)邊界檢查)
  • 變量總是被初始化(零/零/假)
  • 方法
  • 接口
  • 類型斷言(instanceof)
  • 反射

但是,Go在幾乎所有方面都需要更簡(jiǎn)潔,更短的代碼才能實(shí)現(xiàn)相同的功能。 請(qǐng)參見下面的代碼:

 

Java開發(fā)人員為什么要選擇Go?

 

顯然,Go在Java中實(shí)現(xiàn)了相同的并發(fā)線程功能,而代碼卻少了幾倍。

方法定義:

  • Java僅支持一個(gè)返回值,如果需要更多值,則需要定義一個(gè)Object。
  • Go支持多個(gè)返回值

func foo() (string, bool) {}

類:

  • Java有類
  • Go具有Struct,并且Struct不需要getter / setter和toString或equals

接口:

  • 在Java中,我們有一個(gè)特定的接口類型:interface,接口中的方法由繼承該接口的類專門實(shí)現(xiàn)。
  • Go還具有接口函數(shù),但是不需要顯式聲明Go中的接口實(shí)現(xiàn),只需結(jié)構(gòu)(即Java中的類)即可實(shí)現(xiàn)接口中的方法。

 

  1. type Shape interface {  
  2.     Print() 
  3. type Rectangle struct {  
  4.   width int height int 
  5.  
  6. func (r *Rectangle) Print() {  
  7.   fmt.println("Rectangle!"); 

上面的代碼是在Go中使用接口的簡(jiǎn)單示例,該接口比Java更簡(jiǎn)潔,更靈活。

甚至for循環(huán)更靈活:

  • 在Java中,我們使用:

 

  1. for (int i = 0; i < arr.length; i++){  
  2.   Object b = arr[i];  
  3.   //...  
  • 在Go中,就像這樣簡(jiǎn)單:

 

  1. for i, v := range arr { } 
  2. // or I don't need index 
  3. for v := range arr { fmt.println("value="+v);} 

有許多示例說明Go在編寫方面比Java更簡(jiǎn)單,更快捷。 這就是為什么許多公司只需要3或5個(gè)Go程序員,而Java可能需要10個(gè)程序員來完成同一工作的原因。

這是全部嗎?

不,Go的更大優(yōu)勢(shì)在于性能。

Go是對(duì)Google規(guī)模問題的解答。

 

很多項(xiàng)目。 成千上萬(wàn)的Go程序員。 數(shù)百萬(wàn)行Go代碼。 Go是Google并發(fā)的最終解決方案。

  • 設(shè)計(jì)用于1臺(tái)機(jī)器
  • 日常工作在數(shù)千臺(tái)機(jī)器上運(yùn)行
  • 工作協(xié)調(diào),與系統(tǒng)中的其他人互動(dòng)
  • 一次很多

 

Java開發(fā)人員為什么要選擇Go?

 

Go獨(dú)特的并發(fā)功能具有傳奇色彩。 該語(yǔ)言提供了與大多數(shù)主流編程語(yǔ)言不同的并發(fā)模型。 Go倡導(dǎo)以不同的方式思考現(xiàn)代軟件中的并發(fā)問題。 互聯(lián)網(wǎng)上有許多文章比較了Go和Java的性能,您可以參考它。

我會(huì)用Go完全替代Java嗎?

不,我不會(huì)。Java仍然具有許多優(yōu)勢(shì)。 Go和Java在語(yǔ)言功能和使用場(chǎng)景方面也有許多差異。

Java已經(jīng)存在20多年了。 編程語(yǔ)言對(duì)其功能產(chǎn)生了影響。 它得到了開發(fā)人員的巨大支持,形成了一個(gè)強(qiáng)大的社區(qū)。 他們是過去一段時(shí)間內(nèi)的開發(fā)人員,但是他們是解決您問題的活躍社區(qū)。 另一方面,Go擁有活躍的社區(qū),雖然規(guī)模很小,但增長(zhǎng)速度更快。 有很多資源和示例代碼。 如果遇到問題,更有可能的是,如果有文檔記載,您將在以前走過相同道路的其他開發(fā)人員的幫助下找到解決方案。

Java提供了可移植性,它專門設(shè)計(jì)用于編寫一次并可以在任何地方運(yùn)行。 JVM與硬件交互以使代碼在任何應(yīng)用程序中都能正常工作。 有時(shí)在任何更復(fù)雜的機(jī)器上啟動(dòng)同一行代碼可能并不準(zhǔn)確。 它是Android手機(jī)的默認(rèn)開發(fā)語(yǔ)言。

結(jié)論

現(xiàn)在是學(xué)習(xí)Go的優(yōu)秀時(shí)間。

使用Go將在基于Docker和Kubernetes的云時(shí)代引領(lǐng)潮流。

Go社區(qū)變得越來越成熟,并且越來越多的開源框架可用。 您獲得的支持越多,您可以學(xué)習(xí)的地方就越多。 讓我們掌握另一種武器,增強(qiáng)自己,更好地適應(yīng)新時(shí)代。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2022-12-19 07:33:49

開發(fā)人員谷歌制度

2019-10-17 09:00:00

GoRust編程語(yǔ)言

2020-07-23 08:21:25

PHP開發(fā)人員MVC

2022-03-03 23:30:27

TypeScrip開發(fā)前端

2011-05-05 17:57:18

軟件開發(fā)

2021-11-01 22:19:29

開發(fā)測(cè)試代碼

2021-04-18 18:12:07

Linux開發(fā)操作系統(tǒng)

2018-07-09 14:05:16

編程語(yǔ)言PythonPipenv

2011-06-20 08:43:15

Windows 8開發(fā)人員

2021-01-30 10:51:07

Python編程語(yǔ)言開發(fā)

2023-09-04 08:20:00

2009-07-20 16:11:41

JRuby Swing

2023-01-11 12:14:50

NeoVimVim開發(fā)

2023-10-13 06:54:58

2022-10-25 15:51:40

2012-06-18 15:05:54

開發(fā)

2019-09-24 15:29:57

程序員開發(fā)數(shù)據(jù)

2023-12-25 07:58:46

Python開發(fā).NET

2014-09-12 10:28:28

技術(shù)開發(fā)程序員

2011-12-21 09:19:32

API
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)