golang學習第一篇 golang簡介

golang簡介

很久沒寫博客了,最近在學golang。爲了總結學習經驗,博客又派上用場了。

golang 是由谷歌的三位大牛發明並開源出來的,具體哪三位請大家自行搜索。
博主使用過這些計算機語言:C/C++、VB、C#、PHP、javascript、python、erlang。目前使用erlang從事即時通訊後臺開發,期間也接觸一些golang的開源項目。雖然很早就瞭解過golang,但沒系統的學習過。
對比之前用過的計算機語言,golang有這些優點:

1、簡單
golang裏的變量可以不用定義而直接使用,golang會自行推導出變量的類型以及是否定義過。
例如: 
type Student struct{
    name string
    age int

}

student := Student{ "Bob", 12}


在上面的代碼中,:=  運算符會要求golang檢查變量 student 是否被定義過。如果沒有被定義,golang會自動定義,並賦值;如果該變量已經定義,那麼golang會報錯提示該變量已經被定義過。

從上面代碼中我們還可以看到幾個其他的優點:行尾不需要結束符(如C/C++的“;”, erlang的 “,” 等);定義變量(或新類型)時類型在變量(或新類型)名稱的後面,這樣做的好處是讓開發者更加關心變量(或新類型)本身,而無需太關心其類型,因爲golang會幫你處理大部分類型問題,或通過類型檢查,或通過類型推導。
關於語法方面的其他優點,大家可以自行去體會。

2、高效

golang 程序擁有兩種執行方式:解釋執行和編譯執行。解釋執行通過例如go run test.go 的方式來執行 ,go 文件裏的代碼;編譯執行類似於C/C++,直接將代碼編譯成可執行的二進制程序。因此,golang無論是在開發效率還是運行效率上,都有其獨特的優勢。相比C/C++,golang程序擁有更快的開發效率;相比erlang、java、python等,golang程序擁有更好的執行效率。


3、併發

和erlang一樣,golang 天然支持併發處理。golang 語法中的 go 關鍵字即是創建一個併發的 golang 進程,與創建者進程共同處理任務。既然和erlang一樣都是天然支持併發,那麼我們比較下這兩門語言的相似之處和特點:
erlang:使用spawn函數創建新進程,進程之間利用進程的pid來進行通信,pid與進程一一對應,這種思想有點類似操作系統中進程pid的思想。
golang:使用go 關鍵字創建新進程,進程之間利用channel進行通信,這種思想有點類似生產者、消費者的思想。

4、豐富

這裏的豐富包含兩方面:1)語言本身,綜合了很多語言的特點,如:C/C++的指針、python的無需行結束符、erlang的併發等;2)類庫豐富,除了golang的標準庫能滿足80%以上的需求外,社區還有很多開源的擴展庫和框架。


5、活躍

由於谷歌的關係,以及雲計算、docker的興起,golang社區也保持不錯的活躍度


轉載請註明出處 http://blog.csdn.net/letian0805/article/details/51340768


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章