采用goroutine的方式使多線程編寫更加容易挂滓、代碼可讀性更好妆档,可以簡單理解為訂閱者發(fā)布者模式膀懈,設(shè)計(jì)類似于unix管道通信模式富岳, 對于消息隊(duì)列編程有了解的話很容易理解goroutine的處理模式倒脓。
能直接編譯成二進(jìn)制文件沒有第三方依賴撑螺,因?yàn)間o是靜態(tài)編譯,包含自己runtime崎弃,相對于c會大一些甘晤, 但相對java 這種依賴虛擬器的語言編譯后的文件小的多。對于docker環(huán)境更小的鏡像意味著更快的啟動速度饲做。
語言簡潔高效线婚,相對于python ruby編碼負(fù)擔(dān)沒有增加多少,運(yùn)行效率卻有大幅度的提升盆均。
golang對新人友好塞弊,學(xué)習(xí)負(fù)擔(dān)小,語法簡單泪姨,沒有多余的語法糖游沿,學(xué)習(xí)速度快。
c語言易學(xué)難用肮砾,go易學(xué)相對好用诀黍,學(xué)習(xí)和使用達(dá)到一個不錯的價值平衡。學(xué)習(xí)和收益比很高仗处,是一個性價比很好的語言眯勾。
go難做壞事枣宫,即使新手的代碼也不至于對代碼體系結(jié)構(gòu)造成大的危害,相對對于java這類依賴于框架的語言吃环,如果對框架和復(fù)雜語言特性沒有深入理解也颤,很容易寫出破壞性代碼。
golang內(nèi)置gc郁轻,gc也是為了對程序員友好翅娶,減少考慮銷毀對象的編碼負(fù)擔(dān),保證內(nèi)存安全好唯。
golang支持跨平臺故觅,可以跨平臺編譯,跨平臺運(yùn)行渠啊,支持各種主流軟硬件環(huán)境输吏。
golang的編譯速度飛快,編譯不等待替蛉,甚至可以替代python等腳本語言贯溅,做運(yùn)維腳本使用。
對系統(tǒng)資源要求非常低躲查,節(jié)省服務(wù)器它浅,用戶可以使用廉價的樹莓派作為服務(wù)器。
對程序員友好:更好的編程效率和體驗(yàn)镣煮,易于學(xué)習(xí)平穩(wěn)的學(xué)習(xí)曲線姐霍, 對機(jī)器友好:更好的執(zhí)行效率。對機(jī)器友好和對程序員友好從某種程度是一種悖論典唇,不同語言根據(jù)使用目的和設(shè)計(jì)理念有不同的偏向镊折,ruby python等動態(tài)語言對程序員更加友好,c c++從某種層面向機(jī)器進(jìn)行妥協(xié)介衔。golang在兩者找到了很好的平衡點(diǎn)恨胚,既考慮性能又盡量對程序員友好,減少編碼負(fù)擔(dān)炎咖。
golang設(shè)計(jì)理念是實(shí)用不接受語法糖赃泡,摒棄一切花哨的東西,非常的樸實(shí)乘盼,從不嚴(yán)格追求所謂學(xué)術(shù)中的面向?qū)ο笊堋⒑瘮?shù)式編程,但是引進(jìn)了面向?qū)ο蠛瘮?shù)式編程的一些先進(jìn)理念绸栅,開發(fā)者面向?qū)ο蠛秃瘮?shù)式編程的設(shè)計(jì)理念對golang開發(fā)還是很有用的级野。
目前新的有趣的項(xiàng)目大多數(shù)采用golang,比如prometheus阴幌、 docker勺阐、 kubernetes、 etcd矛双。
golang是由google開發(fā)和維護(hù)的背靠大樹好乘涼渊抽。