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。
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5 ?
func main() {
- 6? ?????
fmt.Println("Hello Codey !")
- 7 ?
}
上述代碼的輸出結果就是:Hello Codey !
8. 小結
Go 語言目前的用途主要是在服務器和區塊鏈上。但是它的功能不止于此,需要我們多去開發多去使用,使得 Go 語言的生態更加完整,更加強大。
文章來源于網絡,侵刪!