最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

為什么很多公司都開始使用Go語言?

2023-08-10 15:42 作者:golang教程  | 我要投稿

近年來,你是不是發(fā)現(xiàn)越來越多的互聯(lián)網(wǎng)大廠開始使用Go語言了。其中包括騰訊、美團、滴滴、百度、Google、bilibili...還有最初使用Python的字節(jié)跳動,甚至已經(jīng)全面擁向Go了。

國內(nèi)外首屈一指的公司們,為什么都開始使用Go語言了?

今天陪你談一談,它到底有什么優(yōu)勢?

說起Go的優(yōu)勢,多半是因為它有一些別人沒有的特性,或者優(yōu)化了別人麻煩的地方。

在了解Go的特點之前,我們先來看看其它幾種常見的語言。ps:這里不是說誰好誰壞,畢竟更多是因人而異。

C/C++

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

C/C++也作為很多初學(xué)初學(xué)的語言,它們都是直接編譯為機器碼,所以執(zhí)行效率會更高,并且都不需要執(zhí)行環(huán)境,用戶的使用成本會更低,不像很多語言還需要安裝所需的環(huán)境。也因為這些原因,它們的一次編碼或編譯只適用于一種平臺,對于不同操作系統(tǒng)而言,有時需要修改編碼再編譯。

對于開發(fā)者"很不友好",需要自己處理垃圾回收(GC)的問題。編碼時,還需要考慮,堆上的內(nèi)存什么時候free、delete?會考慮代碼會不會造成內(nèi)存泄露、不安全。


Java

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


JavaScript

和Python一樣,JS是一種解釋型語言,它們不需要編譯,解釋后即可運行。所以Js也是需要特定的執(zhí)行環(huán)境(瀏覽器引擎) 的。

將其代碼放入瀏覽器后,瀏覽器需要解析代碼,所以也會有虛擬化損失。Js只需要瀏覽器即可運行,所以它也是跨平臺的。


談到Go

看完了前面幾種常見語言的簡單介紹。C/C++性能很高,因為它直接編譯為二進制,且沒有虛擬化損失,Go覺得還不錯;Java的自動垃圾回收機制很好,Go覺得也不錯;Js的一次編碼可以適用可以適用多種平臺,Go覺得好極了;而且Go天然具備高并發(fā)的能力,是所有語言無可比及的。

帶你簡單總結(jié)一下:

1.Go自帶運行環(huán)境Runtime,且無須處理GC問題

Go程序是自帶運行環(huán)境的,Go程序的Runtime會作為程序的一部分打包進二進制產(chǎn)物,和用戶程序一起運行,也就是說Runtime也是一系列.go代碼和匯編代碼等,用戶可以“直接”調(diào)用Runtime的函數(shù)(比如make([]int, 2, 6),這樣的語法,其實就是去調(diào)用Runtime中的makeslice函數(shù))。

對于Go程序,簡單來說就是不需要安裝額外的運行環(huán)境,即可運行。除非你需要開發(fā)Go的程序。

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


2.快速編譯,且跨平臺

不同于C/C++,對于多個平臺,可能需要修改代碼后再編譯。也不同于Java的一次編碼,編譯成中間碼運行在多個平臺的虛擬機上。Go只需要一次編碼,就能輕松在多個平臺編譯成機器碼運行。它這跨平臺的能力也是Runtime賦予的,因為Runtime有一定屏蔽系統(tǒng)調(diào)用的能力。


3.天然支持高性能高并發(fā),且語法簡單、學(xué)習(xí)曲線平緩

C++處理并發(fā)的能力也不弱,但由于C++的編碼要求很高,如果不是很老練、專業(yè)的C++程序員,可能會出很多故障。而Go可能經(jīng)驗不是那么豐厚,也能寫出性能很好的高并發(fā)程序。它這超強的高并發(fā),也是Runtime賦予的去處理協(xié)程調(diào)度能力。


4.豐富的標(biāo)準(zhǔn)庫、完善的工具鏈

對于開發(fā)者而言,安裝好Golang的環(huán)境后,就能用官方的標(biāo)準(zhǔn)庫開發(fā)很多功能了。


5.Go自身就具有豐富的工具鏈

比如:代碼格式化、單元測試、基準(zhǔn)測試、包管理...


很多大廠開始使用Go語言、越多人首選學(xué)習(xí)GoLang,和go的這些特性都有關(guān)系吧。不少有經(jīng)驗的大佬都會告訴你,Go 的前進步伐不可阻擋!

最后也為大家整理了一些go語言資源,希望可以幫到大家。


為什么很多公司都開始使用Go語言?的評論 (共 條)

分享到微博請遵守國家法律
五莲县| 闽侯县| 青河县| 武功县| 碌曲县| 梅河口市| 呼图壁县| 扶余县| 武平县| 孙吴县| 巴南区| 信宜市| 青河县| 家居| 龙南县| 东方市| 兴义市| 台北市| 东丽区| 黄大仙区| 靖西县| 双江| 冀州市| 宕昌县| 车险| 巍山| 澎湖县| 淮安市| 吴桥县| 仲巴县| 沙坪坝区| 新安县| 金乡县| 乾安县| 潜江市| 阜宁县| 尼勒克县| 特克斯县| 仙居县| 水城县| 盘锦市|