中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

Go有什么優(yōu)點?

發(fā)布于:2020-12-24 16:14:20

0

257

0

go golang 后端

用獨立樂隊Cracker來解釋,現(xiàn)在世界需要的是另一種編程語言,就像我需要在頭上挖個洞。 就是說,Go像爬藤一樣緩慢而可靠地淹沒了開發(fā)世界,它以郁郁蔥蔥的(并且在許多方面都優(yōu)越)覆蓋了編程能力,覆蓋了開發(fā)之前的一切。 隨著它的日益流行,有很多原因需要您仔細(xì)研究一下。

傳說谷歌工程師在等待其他程序編譯時設(shè)計了Go。 他們對工具集的不滿迫使他們重新考慮系統(tǒng)編程,創(chuàng)建了一個精益,精簡和編譯的解決方案,該解決方案允許在壓力下進(jìn)行大規(guī)模多線程,并發(fā)和性能處理。

在現(xiàn)代硬件上甚至在容器內(nèi)或虛擬機(jī)上運行Go都是一種真正的樂趣。 因為Go旨在運行在多個內(nèi)核上,所以它被構(gòu)建為支持并發(fā)性和添加內(nèi)核時的擴(kuò)展性。 此外,它的多線程功能(尤其是goroutines)是您的絕招,令人驚訝且受歡迎。

 

專為并發(fā)而設(shè)計

在深入探討之前,讓我們看一下goroutine。 這些本質(zhì)上是并發(fā)函數(shù),它們在程序的其余部分完成時運行。 換句話說,您可以啟動goroutine,使其運行,并在其和成千上萬的弟兄在后臺運行時繼續(xù)運行。 網(wǎng)絡(luò)超時? 不用擔(dān)心,您的goroutine將在主循環(huán)繼續(xù)時對其進(jìn)行管理。 數(shù)據(jù)庫完全失??? 您的goroutine將知道,您可以正常解決此問題。

看一個簡單的例子:

package main

import (

  "fmt"

  "time"

)

func hello() {

  fmt.Println("Hello world goroutine")

}

func main() {

  go hello()

  time.Sleep(1 * time.Second)

  fmt.Println("main function")

}

main函數(shù)的工作方式與C語言相同。在此代碼中,main觸發(fā)名為goro()的goroutine程序(由go關(guān)鍵字指示)。該程序需要快速打na,然后繼續(xù)。如果hello()函數(shù)發(fā)生任何事情,則主函數(shù)不會注意到。重要的是工作已經(jīng)完成。

當(dāng)主例程喚醒并退出Println時,程序結(jié)束。 hello()函數(shù)可以是任何東西(數(shù)據(jù)調(diào)用,事務(wù),隊列條目),并且它將在程序其余部分運行時運行。就像前面提到的藤本植物一樣,想像goroutines是在主藤本植物繼續(xù)生長的過程中會分支并死亡的小花。

想要看到它的實際效果嗎?在Go Playground中查看此代碼段,您將看到goroutines的工作原理。

僅此功能值得付出代價。對于Web應(yīng)用程序,goroutine可以讓您運行并發(fā)作業(yè),同時避免障礙。例如,如果您在等待數(shù)據(jù)輸入,即使用戶正在鍵入,goroutine也會觸發(fā)以提供預(yù)填充的文本。換句話說,即使并發(fā)進(jìn)程花費的時間比預(yù)期的長,您的程序仍將繼續(xù)運行。

最棒的是,goroutine很便宜,因此Go變得更快。

Naveen Ramanathan在Go學(xué)習(xí)資源GoLangBot上寫道:“ Goroutines被多路復(fù)用到更少數(shù)量的OS線程。” “在具有數(shù)千個Goroutine的程序中,可能只有一個線程。如果該線程中的任何Goroutine阻塞(例如,等待用戶輸入),則會創(chuàng)建另一個OS線程,并將其余的Goroutines移至新的OS線程。所有這些都由運行時處理,作為程序員,我們從這些復(fù)雜的細(xì)節(jié)中抽象出來,并獲得了干凈的API以并發(fā)使用。”

 

為什么要學(xué)習(xí)Go?

 

近年來,您可能已經(jīng)看過一些推文或博客,認(rèn)為Go優(yōu)于Perl / Python / C / etc。我們所有人都一直在使用某些東西(哎呀,我什至使用命令行PHP)來在服務(wù)器上做些小事情。想看日志嗎? Perl。是否想發(fā)送常規(guī)推文?蟒蛇。是否要管理來自數(shù)千個并發(fā)用戶的傳入數(shù)據(jù)? Java或C ++始終是您的答案。那么圍棋“更好”嗎?

好吧,Go,可以做到所有這些。 Go確保您的工具箱可在所有平臺和所有硬件上編譯。它使用了一個出乎意料的簡單軟件包管理解決方案,“可以正常工作”,并且非常便攜。您可以輕松地用Go替換腳本語言,并且與Go解決方案相提并論,您的編譯語言肯定會贏得他們的青睞。

Go是為軟件工程而構(gòu)建的。并不是所有的新功能都很棒,但是當(dāng)針對我們大多數(shù)人現(xiàn)在使用的確切環(huán)境設(shè)計一種編程語言時,即針對性能進(jìn)行了優(yōu)化的可伸縮,基于云的服務(wù)器,那么很多事情都可以解決。 Go幾乎可在任何計算機(jī)上編譯,因此您可以使用它創(chuàng)建完整的Web應(yīng)用程序或工具來清理傳入的數(shù)據(jù)以進(jìn)行處理。像之前的Perl一樣,Go是一把瑞士軍刀,但是在過去的幾十年中,它已經(jīng)消除了所有開銷和多余的垃圾,這些垃圾已經(jīng)累積到編程平臺上。

去很簡單。作為開發(fā)人員,我已經(jīng)能夠在一個漫長的周末里挑選語言和框架。這使我對一些重要的平臺有所了解,并且由于我不必每天編寫代碼,因此在創(chuàng)建小的副項目時有足夠的繩子使自己陷入困境。去已經(jīng)不一樣了。對于已經(jīng)了解編程或其他幾種語言基礎(chǔ)知識的人們,學(xué)習(xí)Go最多需要幾個小時。掌握了技巧之后,就可以開始編寫代碼了。同樣,由于它是如此之快,因此您幾乎希望將其用于所有命令行解釋器,從而取代bash腳本,Python草圖和Java工作。

走快??纯碝ohamad Fadhil在Go中的這份聰明的待辦事項清單。代碼非常簡單-在Docker中建立一個MySQL數(shù)據(jù)庫,添加一些HTML,幾乎立刻就有了一個可在命令行編譯的超快速Web應(yīng)用程序。此外,F(xiàn)adhil探究了為什么他首先喜歡Go的原因:速度。

在正則表達(dá)式測試(regex-redux)中,Go運行了3.55秒,而Java運行了5.58。 Go程序重102行代碼,而Java程序重70行。確實,Go比Java重一點,但是考慮到Go擊敗第二流行的系統(tǒng)語言的速度,很明顯不犧牲速度。

Go可以接管許多開放源代碼和私有項目,并且它作為微服務(wù)和Web的標(biāo)準(zhǔn)語言變得越來越有用。它可能會開始取代性能較低的解決方案,例如Java和C。

不要相信我。請訪問GoLang.org,以獲取有關(guān)編寫Web應(yīng)用程序,命令行工具和服務(wù)的建議。

“就我個人而言,我相信Go是新的Java。現(xiàn)在,許多開源項目(例如Jaeger,Kubernetes,Docker,InfluxDB,Serf等)都是用Go編寫的。相比之下,較舊的項目(例如Apache Kafka,Apache Hadoop,Apache Spark等)則是用Java編寫的。” Fadhil寫道。

圍棋就像國際象棋或圍棋一樣:需要花一點時間學(xué)習(xí),要終生掌握。幸運的是,與國際象棋不同,圍棋的難度隨經(jīng)驗而降低,很快您就會用世界上最現(xiàn)代的語言之一編寫快速而激烈的程序。