1.1 語言介紹
Go 語言由谷歌(Google)公司于 2009 年正式對外發布,設計 Go 語言的初衷都是為了滿足 Google 公司的需求,主要目標是“兼具 Python 等動態語言的開發速度和 C/C++等編譯型語言的性能與安全性”,旨在不損失應用程式性能的情況下降低代碼的復雜性,具有“部署簡單、并發性好、執行性能好”等優勢,最主要還是為了并發而生,并發是基于
goroutine的,goroutine類似于執行緒,但并非執行緒,可以將goroutine理解為一種輕量級執行緒,Go 語言運行時會參與調度goroutine,并將goroutine合理地分配到每個 CPU 中,最大限度地使用 CPU 性能,
1.2 作者介紹

從左到右分別是 :
-
羅伯特·格瑞史莫(Robert Griesemer): 曾為谷歌的 V8 JavaScript 引擎和 Chubby 開發代碼
-
羅勃·派克(Rob Pike): 羅布·派克是 Unix 的先驅,是貝爾實驗室最早和 Ken Thompson 以及 Dennis M. Ritche 開發 Unix 的猛人,UTF-8 的設計人,還是 1980 年奧運會射箭的銀牌得主,
-
湯普遜(Ken Thompson): Ken Thompson 圖靈獎得主,C 語言前身 B 語言的作者,Unix 的發明人之一, 作業系統 Plan 9 的主要作者, 共同開發了 UTF-8,
1.3 Go 語言特點
Go 語言,作為編程語言的后生,站在巨人的肩膀上,吸收了其他一些編程語言的特點,下面簡單解釋一下:
-
擁有編譯器很方便
自帶編譯器可以檢測出你犯的所有低級錯誤,如:變數名拼錯,不要小看這種問題,沒有編譯器情況下,很可能浪費掉很長時間去排查,并且非常不容易發現,而且
Go語言也是跨平臺編譯的,你可以在 Mac 電腦上,編譯出linux或者windows的目標程式, -
開發速度
Go 是一個非常簡單的語言,上手容易,無論你是小白還是老鳥,都會比其他語言 C/C++ 和 Java 等語言要容易很多,這點在做專案中體現得尤其明顯,很多人可能會說那 python 呢,php 呢?從語言上說 python 和 php 他們沒有編譯檢查,同樣也會像上面說的出一些小的低級錯誤,或者運行時錯誤,這都給 php 和 python 帶來了隱患,所以 Go 語言雖然犧牲了一點點代碼書寫的時間,但是從專案運行安全角度來說,已經非常值得了,
-
天生高并發
Go 語言就是為高并發而生的,當你需要使用并發場景,如果你有其他語言基礎,第一反應是用到鎖,但是 Go 語言提供了更加方便的方式協程+通道,在 Go 語言中代碼不用修改就能直接多協程運行,只要在呼叫的時候加入 go 關鍵字,就可以了,非常方便,這與其他語言截然不同,你要考慮哪里開辟新的執行緒,哪里是代碼執行邏輯,
-
部署簡單
Go 語言最終執行就是一個二進制檔案,包括了它所依賴的程式包,這讓開發者不用考慮部署環境的問題,例如,如果你是 java 程式,要考慮執行你的程式,對方機器是否安裝了 java 的運行環境,其他語言同理,如果對方機器沒有安裝,無法運行你的程式,Go 語言可以在 Mac 和 Linux 上交叉編譯你的代碼,將其拷貝到遠程服務器上,然后就可以任其運行了,
1.4 Go 語言能做什么
Go 的優點:實作快 + 資源占用低 + 任意環境隨便跑,綜合考慮在很多場景十分好用 ,
-
Go 適合造輪子,哪個庫不好用就自己造,
-
Go 適合寫工具,比如 hugo 、hub,還有國人寫的 linux 下的百度 pan client 都是 go 實作的,
-
Go 適合實作 C/C++ 一部分業務,Java 的大部分業務,
-
Go 適合做最外層的膠水,通過 RPC/REST/CGO 粘合不同語言的模塊,而在這個膠水層還可以實作各種業務邏輯,又不用像 shell/python/node 有諸多顧慮和局限,
-
Go 提供了協程、指標、 unsafe, cgo 加上 C/C++ 兼容的記憶體布局和跨平臺的匯編,有了這些你能做很多事情了,
所以問題不是它適合做什么,是你有能力用它做什么,
1.5 哪些公司在使用 Go
這個問題之前 Go 的官方 wiki 里面有一個維護串列,大家可以點擊下面地址看到:
https://github.com/golang/go/wiki/GoUsers
在 stackshare 里面可能更加直接的看到一些使用 Go 的國外企業串列:
- Uber
- Shopify
- Slack
- ...

國內使用 Go 的企業也非常的多:
- 騰訊
- 阿里巴巴
- 百度
- 位元組跳動
- BiliBili
- 小米
- 163Cloud
- PingCAP
- 積夢智能
- .....
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/508068.html
標籤:其他
