前言 嗨嘍,大家好呀~這裡是愛看美女的茜茜吶 又到了學Python時刻~ 你還在為一個一個下載壁紙而煩惱嗎,那有沒有更加簡單的方法呢? 跟著我,一起來看看我是如何批量下載的吧 環境使用: python3.8 | Anaconda pycharm 相關模塊: requests >>> pip inst ...
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
- 積夢智能
- .....