Go語言,也叫做Golang,它是21世紀的C語言。Go語言讓程序員在寫代碼過程當中更加高效,並且它優化了多處理器系統的應用程序,使其能夠媲美C或C++代碼程序的速度。另外,它更加安全地支持並行進程。程序員
項目選擇語言時,開發人員只能在程序地快速開發和程序的性能之間二選一。例如:C和C++這類語言性能好,而Ruby和Python這類語言則擅長快速開發。而Go語言在這二者之間架起了橋樑,不只提供了高性能的語言,同時也讓開發更加快速。golang
總得來講,Go語言是一門編譯型的系統編程語言,具備靜態編譯語言的高性能和動態語言的高效開發雙重特色。編程
2007年google內部項目數組
Go做爲一個20%項目開始研發,即讓員工抽出本職工做以外時間的20%投入在該項目上。谷歌首席軟件工程師Rob Pike說:咱們之因此開發Go,是由於過去10多年間軟件開發的難度使人沮喪。安全
2008年3月閉包
初版語言規範起草。併發
2009年11月10日編程語言
Go語言正式成爲開源編程語言家庭的一員。函數
2015年8月19日性能
Go 1.5版發佈,移除了「最後殘餘的C代碼」。
2018年2月16日
Go 1.10版發佈。
自動垃圾回收
在Go語言中,系統會自動判斷什麼時候須要釋放以前分配的內存空間,並在CPU相對空閒時對不使用的內存進行收集。
豐富的內置類型
在Go語言中,內置類型包含:整型,浮點型,數組,字符串,字典map,切片slice。
由於語言的內置特性,開發者不用添加依賴的包,讓代碼更簡潔。
函數多返回值
Go語言是靜態開發語言中率先提供多返回值功能的語言。若是開發者只關心函數中的某幾個返回值,能夠直接使用下劃線做爲佔位符忽略其餘不關心的返回值。
異常處理
異常處理涉及3個關鍵字:error、panic和recover。其中error報告程序中的普通錯誤,panic報告程序中的致命性錯誤,而recover可讓程序從panic狀態中恢復。
匿名函數與閉包
匿名函數就是沒有定義函數名的一種函數。而在Go語言中,閉包就是匿名函數,它能夠經過匿名函數「捕獲」和它在同一做用域的其它常量和變量。
結構體
結構體是一系列具備相同或不一樣類型的數據構成的數據集合。例如,能夠利用結構體定義一個學生的學號/姓名/性別/年齡等屬性。
接口
接口是具體描述一系列方法的集合。例如,能夠利用接口將一我的的說、唱這些行爲集中到一塊兒。
併發編程
併發編程,就是在同一時刻只能有一條指令執行,但多個進程指令被快速的輪換執行,使得在宏觀上具備多個進程同時執行的效果,但在微觀上並非同時執行的,只是把時間分紅若干段,使多個進程快速交替的執行。如圖1所示。
Golang從語言級別上對併發提供了支持,goroutine是Go併發設計的核心,而goroutine就是Go語言實現的協程。在Go程序裏,只須要在函數調⽤語句前添加關鍵字「go」,就可建立併發執⾏單元。
反射功能
反射是經過reflect包實現的,reflect包定義了兩種反射類型:Type和Value。經過反射機制,能夠獲取接口變量存儲的類型以及相應的值。
已用Go開發服務端的著名企業
▪ 谷歌——Youtube後臺服務端程序
▪ 盛大——盛大雲計算
▪ 小米——小米搶購系統、日誌平臺
▪ dotCloud——Docker
5.1 go語言項目資源
▪ 愛好者開發的Go論壇及博客
▪其它海量開源項目網站:go-wiki、Go Walker、Go Language Resources
5.2 go語言學習資料
▪ Go語言官網:https://golang.org
▪ go中文社區:https://studygolang.com
▪ go中文在線文檔:https://studygolang.com/pkgdoc
參考資料
[1] 許式偉,呂桂華.Go語言編程[M].北京:人民郵電出版社,2012:2-10.