#從韓順平的B站引入
GO能做什么
如上圖握截,可以分為區(qū)塊鏈,后端柱蟀,分布式文件系統(tǒng)等應(yīng)用
對于區(qū)塊鏈川蒙,核心要求分布式數(shù)據(jù)庫賬目蚜厉,公開透明
對于服務(wù)端開發(fā)长已,要求排序、搜索昼牛、推薦的效率术瓮,提供負(fù)載均衡等等,對效率有較高的要求(要有處理高并發(fā)的能力)
對于分布式贰健,云計算胞四,要求調(diào)度,也反映golang計算能力強
go語言是google公司開發(fā)的語言伶椿,也是其主推的語言辜伟,國內(nèi)很多BAT已經(jīng)開始使用go開發(fā)
GO語言歷史
開發(fā)者主要是肯.湯姆遜和羅布.派克。前者一定非常熟悉了脊另,開發(fā)了B,C导狡,unix的人,后者也是bell實驗室得人偎痛,開發(fā)了java的hotspot編譯器和chrome的js引擎V8
google開發(fā)go的原因旱捧,硬件發(fā)展快,軟件當(dāng)時沒有利用好多核多CPU優(yōu)勢踩麦,很多語言速度慢枚赡,而C++雖然速度快,但是開發(fā)慢谓谦,編譯時間長贫橙,有內(nèi)存泄漏問題
如上圖,展示了各版本的演進(jìn)
GO語言的特點
我們知道c效率高反粥,python開發(fā)快卢肃,go就是兼顧兩者谓松,
1 go從c繼承了很多理念,而且有弱化的指針践剂,如下圖就是函數(shù)里給指針傳入鬼譬,并賦值
2 我們知道很多語言都有包的概念用于組織程序結(jié)構(gòu),go強化了要求逊脯,要每個文件都必須指定所屬的包优质,不能獨立存在,如上圖
3我們知道c军洼,c++要自己寫垃圾回收巩螃,而go不用,不用內(nèi)存泄漏的問題匕争,方便我們開發(fā)
4天然高并發(fā)避乏,充分利用多核,goroutine輕量級線程甘桑,輕松實現(xiàn)上萬并發(fā)
5 go語言特有的管道channel拍皮,實現(xiàn)goroutine間通信,后續(xù)會詳解
6 支持返回多個值跑杭,如下铆帽,感覺有點抄襲python,哈哈
7 新增:支持切片slice德谅,延時執(zhí)行defer等等后續(xù)會講
GO開發(fā)工具
GO開發(fā)工具有很多爹橱,我們建議使用自己熟悉的,免費的窄做,如上圖愧驱,有vscode,支持linux,windows,mac os等椭盏, 比如sublime保存一定次數(shù)會提示購買组砚,取消其實和付費版一樣。vim(vi),emacs等常用語linux端開發(fā)
如上庸汗,當(dāng)然還要eclipse惫确,jetbrains系列,這些要安裝go插件蚯舱,LiteIDE是國人開發(fā)的專門使用go的ide
新手學(xué)習(xí)編程改化,要先學(xué)會使用文本編輯工具,如vscode,vim枉昏,notepad++等陈肛,后續(xù)再使用高級IDE,防止習(xí)慣IDE兄裂,脫機不會寫代碼