為什么越來越多的互聯網大廠開始使用Go語言?
近年來,你是不是發現越來越多的互聯網大廠開始使用Go語言了。其中包括騰訊、美團、滴滴、百度、Google、bilibili...還有最初使用Python的字節跳動,甚至已經全面擁向Go了。
國內外首屈一指的公司們,為什么都開始使用Go語言了?
今天馬哥教育陪你談一談,它到底有什么優勢?
說起Go的優勢,多半是因為它有一些別人沒有的特性,或者優化了別人麻煩的地方。
在了解Go的特點之前,我們先來看看其它幾種常見的語言。ps:這里不是說誰好誰壞,畢竟更多是因人而異。
C/C++
C語言是在1971年的時候,被大神Ken Thompson和Dennis Ritchie發明的,而Go語言的主導開發者之一就是Ken Thompson,所以在很多地方和C語言類似,(比如struct、Printf、&取值符)
C/C++也作為很多初學初學的語言,它們都是直接編譯為機器碼,所以執行效率會更高,并且都不需要執行環境,用戶的使用成本會更低,不像很多語言還需要安裝所需的環境。也因為這些原因,它們的一次編碼或編譯只適用于一種平臺,對于不同操作系統而言,有時需要修改編碼再編譯。
對于開發者"很不友好",需要自己處理垃圾回收(GC)的問題。編碼時,還需要考慮,堆上的內存什么時候free、delete?會考慮代碼會不會造成內存泄露、不安全。
Java
Java是直接編譯成字節碼(.class),這種編譯產物是介于原始編碼和機器碼的一種中間碼。這樣的話,Java程序就需要特定的執行環境(JVM)了,執行效率相比會低一些,還可能有虛擬化損失。但是這樣也有一個好處就是可以編譯一次,多處執行(跨平臺)。而且它也是自帶GC的。
JavaScript
和Python一樣,JS是一種解釋型語言,它們不需要編譯,解釋后即可運行。所以Js也是需要特定的執行環境(瀏覽器引擎) 的。
將其代碼放入瀏覽器后,瀏覽器需要解析代碼,所以也會有虛擬化損失。Js只需要瀏覽器即可運行,所以它也是跨平臺的。
談到Go
看完了前面幾種常見語言的簡單介紹。C/C++性能很高,因為它直接編譯為二進制,且沒有虛擬化損失,Go覺得還不錯;Java的自動垃圾回收機制很好,Go覺得也不錯;Js的一次編碼可以適用可以適用多種平臺,Go覺得好極了;而且Go天然具備高并發的能力,是所有語言無可比及的。
馬哥教育帶你簡單總結一下啦:
1.Go自帶運行環境Runtime,且無須處理GC問題
Go程序是自帶運行環境的,Go程序的Runtime會作為程序的一部分打包進二進制產物,和用戶程序一起運行,也就是說Runtime也是一系列.go代碼和匯編代碼等,用戶可以“直接”調用Runtime的函數(比如make([]int, 2, 6),這樣的語法,其實就是去調用Runtime中的makeslice函數)。
對于Go程序,簡單來說就是不需要安裝額外的運行環境,即可運行。除非你需要開發Go的程序。
正因為這樣,Go程序也無須處理GC的問題,全權交由Runtime處理(反正要打包到一起)。
2.快速編譯,且跨平臺
不同于C/C++,對于多個平臺,可能需要修改代碼后再編譯。也不同于Java的一次編碼,編譯成中間碼運行在多個平臺的虛擬機上。Go只需要一次編碼,就能輕松在多個平臺編譯成機器碼運行。它這跨平臺的能力也是Runtime賦予的,因為Runtime有一定屏蔽系統調用的能力。
3.天然支持高性能高并發,且語法簡單、學習曲線平緩
C++處理并發的能力也不弱,但由于C++的編碼要求很高,如果不是很老練、專業的C++程序員,可能會出很多故障。而Go可能經驗不是那么豐厚,也能寫出性能很好的高并發程序。它這超強的高并發,也是Runtime賦予的去處理協程調度能力。
4.豐富的標準庫、完善的工具鏈
對于開發者而言,安裝好Golang的環境后,就能用官方的標準庫開發很多功能了。
常用包
5.Go自身就具有豐富的工具鏈
比如:代碼格式化、單元測試、基準測試、包管理...
很多大廠開始使用Go語言、越多人首選學習GoLang,和go的這些特性都有關系吧。不少有經驗的大佬都會告訴你,Go 的前進步伐不可阻擋!
而系統學習對比自學的優勢更是顯而易見,來【馬哥高端GO語言實戰班12期 】跟著專業老師系統性學習不走彎路,課后教練答疑求職面試輔導......學習老師的經驗,總結自己的邏輯思路,節約的時間和學習成本。想學習或試聽的同學,點擊右下角咨詢老師了解吧!秒回。