首頁 > 後端開發 > Golang > 主體

為什麼越來越多的網路大廠開始使用Go語言了

PHPz
發布: 2023-03-24 11:21:42
原創
1535 人瀏覽過

為什麼越來越多的網路大廠開始使用Go語言了

越來越多的網路大廠開始使用Go語言了,譬如騰訊、美團、滴滴、百度、Google、bilibili. ..

還有原本使用Python的位元組跳動,甚至已經全面擁向Go了。這麼多國內外首屈一指的公司,都在開始使用它了,它到底有什麼優勢呢?這就得談談它的一些優點了。

ps:當然了,還有Go-To-Byte的成員,想要學習go語言,並且用它完成青訓營的大項目吶~

#Go的一些優勢

說起優勢,在某些方面多半是因為它有一些別人沒有的特性,或者優化了別人麻煩的地方,相比起來,才會更勝一籌。那我們來了解一下Go的一些特點吧,但在了解生硬的特點之前,我們先來看看其它幾種常見的語言:

常見的一些語言

這裡不是對比喲,不是說誰好誰壞,而是小馬過河,因人而異~

1、C/C

C語言是在1971年的時候,被大神Ken Thompson和Dennis Ritchie發明的,而Go語言的主導開發者之一就是Ken Thompson,所以在很多地方和C語言類似,(如struct、Printf、&取值符)

C/C 也作為許多初學初學的語言,它們都是直接編譯為機器碼,所以執行效率會更高,而且都不需要執行環境,用戶的使用成本會更低,不像很多語言還需要安裝所需的環境。

也因為這些原因,它們的一次編碼或編譯只適用於一種平台,對於不同作業系統而言,有時需要修改編碼再編譯,有時直接重新編譯即可。

而且對於開發者也"很不友善"?,需要自己處理垃圾回收(GC)的問題。編碼時,還需要考慮,堆上的記憶體什麼時候free、delete?程式碼會不會造成記憶體外洩、不安全?

2、Java

自己作為一個從Java#來學習Go的菜鳥,還未正式開發,就感覺開發效率會比Java低了(個人感覺,不喜勿噴)~?

##Java直接編譯成字節碼(.class),這種編譯產物是介於原始編碼和機器碼的一種中間碼。這樣的話,Java程式就需要特定的執行環境(JVM)了,執行效率相比會低一些,還可能有虛擬化損失。但這樣也有一個好處就是可以編譯一次,多處執行(跨平台)。而且它也是自備GC

3、JavaScript

Python#一樣,JS是解釋型語言,它們不需要編譯,解釋後即可執行。所以Js也是需要特定的執行環境(瀏覽器引擎)# 的。

將其程式碼放入瀏覽器後,瀏覽器需要解析程式碼,所以也會

有虛擬化損失Js只需要瀏覽器即可運行,所以它也是跨平台的。

再談Go

看完了前面幾種常見語言的簡單介紹。

C/C 效能很高,因為它直接編譯為二進制,且沒有虛擬化損失,Go覺得還不錯;Java自動垃圾回收機制很好,Go覺得也不錯;Js一次編碼可以適用可以適用多種平台Go覺得好極了;而且Go天然具備高並發的能力,是所有語言無可比及的。那我們來簡單總結一下吧!

  1. 自帶運行環境Runtime,且無須處理GC問題
## Go

程式的運作環境可厲害了,其實大部分語言都有Runtime的概念,例如Java,它程式的運作環境是JVM ,需要單獨安裝。對於Java程序,如果不經過特殊處理,只能運行在有JMV環境的機器上。 <p>而<code>Go程式是自帶運行環境的,Go程式的Runtime會作為程式的一部分打包進二進位產物,和使用者程式一起執行,也就是說Runtime也是一系列.go程式碼和彙編程式碼等,使用者可以「直接」呼叫Runtime的函數(例如make( []int, 2, 6),這樣的語法,其實就是去呼叫Runtime中的makeslice函數)。對於Go程序,簡單來說就是不需要安裝額外的運行環境,即可運行。除非你需要開發Go的程式。

正因為這樣,Go程式也無須處理GC的問題,全權交由Runtime處理(反正要打包到一起)

  1. 快速編譯,且跨平台

有不同於C/C ,對於多個平台,可能需要修改程式碼後再編譯。也不同於Java的一次編碼,編譯成中間碼運行在多個平台的虛擬機器上。 Go只需要一次編碼,就能輕鬆在多個平台編譯成機器碼運作。

值得一提的就是它這跨平台的能力也是Runtime賦予的,因為Runtime有一定屏蔽系統呼叫的能力。

  1. 自然支援高效能高並發,且語法簡單、學習曲線平緩

C 處理並發的能力也不弱,但由於C 的編碼要求很高,如果不是很老練、專業的C 程式設計師,可能會出很多故障。而Go可能經驗不是那麼豐厚,也能寫出效能很好的高並發程式。

值得一提的就是它這超強的高並發,也是Runtime賦予的去處理協程調度能力。

  1. 豐富的標準函式庫、完善的工具鏈

#對開發者而言,安裝好Golang的環境後,就能用官方的標準函式庫開發很多功能了。例如下圖所示的許多常用套件:

為什麼越來越多的網路大廠開始使用Go語言了

而且Go自己就具有豐富的工具鏈 (例如:程式碼格式化、單元測試、基準測試、套件管理...)

  1. 。 。 。 。 。 。

很多大廠開始使用Go語言、我們團隊為什麼使用GoLang,和這些特性,多少都有一些關係吧~

相關推薦:Go影片教學

以上是為什麼越來越多的網路大廠開始使用Go語言了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板