01 Go語言簡介
學習任何知識之前肯定要對這個知識有一個簡單的瞭解,當然學習 Go 語言也一樣,這個小節我們就來簡單認識下 Go 語言,瞭解下 Go 語言的來龍去脈。
1. Go 語言的出身
Go(又稱 golang)是 Google 開發的一種靜態強型別、編譯型、併發型,並具有垃圾回收功能的程式語言。
羅伯特·格里澤默(Robert Griesemer),羅布·派克(Rob Pike)及肯·湯普遜(Ken Thompson)於 2007 年 9 月開始設計 Go,後來 Ian Lance Taylor、Russ Cox 加入專案。Go 是基於 Inferno 作業系統所開發的,於 2009 年 11 月正式宣佈推出,成為開放原始碼專案,並在 Linux 及 Mac OS X 平臺上進行了實現,後來追加了 Windows 系統下的實現。在 2016 年,Go 被軟體評價公司 TIOBE 選為“TIOBE 2016
2. Go 語言的特點
- Go 語言可以直接編譯成主流作業系統支援的可執行檔案,部署服務只需要扔一個可執行檔案上去直接執行就好了;
- Go 語言有不輸於動態語言的豐富靜態庫。歸功於強大的官方團隊和社群,目前 Go 語言幾乎什麼都可以開發;
- Go 語言天生支援併發,這是個近乎無敵的設定;
- Go 語言具有自動垃圾回收機制;
- Go 語言簡單易學,因為它幾乎支援常用的語言的所有特性:繼承、封裝等等;
- Go 語言內嵌支援 C 語言,你甚至可以直接在 Go 語言裡面寫 C 語言程式碼;
- Go 語言支援交叉編譯,你可以在 Windows 環境中編譯任何平臺的 Go 可執行程式。但是需要注意的是,如果你在 Go 程式中寫了 C 語言,你就不能只用交叉編譯的特性了,所謂魚和熊掌不可兼得嘛。
3. Go 語言的使用場景
- 伺服器程式設計;
- 分散式系統,資料庫代理器;
- 網路程式設計,這一塊目前應用最廣,包括 Web 應用、API 應用、下載應用;
- 記憶體資料庫,前一段時間 Google 開發的 groupcache,couchbase 的部分元件;
- 雲平臺,目前國外很多雲平臺在採用 Go 開發,CloudFoundy 的部分元件,前 VMare 的技術總監自己出來搞的apcera 雲平臺;
- 區塊鏈技術研發。
4. Go 語言開發的經典專案
- Docker:基於 lxc 的一個虛擬打包工具,能夠實現 PAAS 平臺的組建。
- Hyperledger fabric:市面上最流行的兩大區塊鏈平臺之一。
5. 與其他開發語言對比
Go 語言為什麼能在現有的成熟語言中脫穎而出呢?這要歸功於它比 Java 還簡潔的語法,接近 C 語言的編譯執行速度,甚至還有不亞於指令碼語言的開發速度。在目前最要求效率的當下,它無疑會是一匹黑馬。但是和其它語言比起來劣勢也很明顯,因為它出現的時間短,學習資料少,第三方支援庫雖然多,但是比起 Java 以及 C 語言還是遠遠不夠。Go 語言不支援泛型,對於學習 Java 的開發人員來說一開始會很不適應。
6. 為什麼要學習 Go 語言
綜上所述, Go 語言出身名門,血統純正。從學習難度上來說語法簡單,功能強大。從可擴充套件性上來說第三方庫眾多,標準庫強大穩定。效能上更是擁有無可挑剔的自動排程執行緒。Go 語言完美地協調了執行效率和開發效率之間的關係。而且 Go 語言目前已經廣泛應用於虛擬容器、區塊鏈等傳統的和高精尖的產業中,將來會有巨大的前景。不管是國內還是國外,對 Go 語言的程式設計師的需求只會越來越多。
7. Go 語言的程式碼
接下來我們來看看 Go 語言怎麼用程式碼來和你 say hello。
package main
import "fmt"
func main() {
fmt.Println("Hello Codey !")
}
上述程式碼的輸出結果就是:Hello Codey !
8. 小結
Go 語言目前的用途主要是在伺服器和區塊鏈上。但是它的功能不止於此,需要我們多去開發多去使用,使得 Go 語言的生態更加完整,更加強大。