1. 程式人生 > GO語言入門 >01 Go語言簡介

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

年最佳語言”。 目前,Go 已經開始每半年釋出一個二級版本(即從 a.x 升級到 a.y)。
圖片描述

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 語言的生態更加完整,更加強大。