Go 生態(tài)系統(tǒng)
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、北海網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為北海等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
學(xué)習(xí)基本上相當直接的。我們之前在 C/C++/Java/Objective-C/PHP 的經(jīng)驗讓我們學(xué)習(xí) Go 相當快,并且在幾天內(nèi)就開始開發(fā)了。當然會有一些新的和不常見的東西需要學(xué)習(xí),包括 GOPATH 還有如何處理包,但這在我們的預(yù)期之內(nèi)。
幾天之內(nèi),我們意識到即使是一個以簡化為設(shè)計目的的語言,Go 也是非常強大的。它能夠做任何現(xiàn)代編程語言應(yīng)該能做的事:能夠處理 JSON、服務(wù)器之間通訊甚至訪問數(shù)據(jù)庫也沒問題(并且只需要幾行代碼)。
在構(gòu)建一個服務(wù)器時,你應(yīng)該首先決定是否使用任何第三方庫或者框架。對于 Bugfender,我們決定使用:
Martini
Martini 是一個強大的 Go 的 web 框架。我們開始這個實驗時,它是一個很棒的解決方案,至今也是,我們還沒遇到任何問題。然而如果我們今天再次開始這個實驗的話,我們會選擇一個不同的框架,因為 Martini 不在維護了。
Gorm
有些人喜歡 ORM,而有些人則不喜歡。我們決定使用 ORM,更確切地說是 GORM。我們的實現(xiàn)只針對 web 前端,對于日志提取 API 仍然繼續(xù)使用手工優(yōu)化的 SQL。在一開始,我們確實很喜歡它,但是隨著時間的推移,我們開始發(fā)現(xiàn)問題,并且我們很快將它從代碼中完全移除,并且使用 sqlx 這個標準 SQL 庫。
GORM 的一個主要問題是 Go 的生態(tài)系統(tǒng)。作為一個新語言,自我們開始開發(fā)產(chǎn)品以來 Go 已經(jīng)有很多新版本。在這些新版本中的一些改變并不向后兼容,因此要使用最新的庫版本,我們要經(jīng)常重寫已有代碼并檢查我們?yōu)榻鉀Q版本問題所做的 hack。
當我們將一種功能用于多個地方的時候,就需要封裝這些功能,以便于多次使用,然而封裝就需要使用函數(shù)來進行封裝,因此本章我們就來說說函數(shù)的使用方法。我們先來看看涉及到函數(shù)的一些用法目錄。如下:
無參函數(shù)
有參函數(shù)
帶返回值的函數(shù)
帶多個返回值的函數(shù)
匿名函數(shù)
閉包
自調(diào)用
遞歸
本章內(nèi)容還是比較豐富的,請耐心往下看。
C++適合本地程序的開發(fā)。Go語言適合網(wǎng)絡(luò)程序和本地程序的開發(fā)。Go的優(yōu)點:垃圾回收,語意明確,格式統(tǒng)一。?Go的缺點:效率目前沒有C++高,但對于桌面程序而言,效率問題不大,因為硬件已經(jīng)很快了。c++過于復(fù)雜了,加入很多炫技的內(nèi)容。這些內(nèi)容脫離了事情的本質(zhì)。
最明顯的就是所謂的面向?qū)ο?。基于面向?qū)ο蟮墓こ倘绻銐虼蟮那闆r下,會帶來很大的耦合度,如果再加上內(nèi)存管理,多線程等等。項目后期基本上沒辦法維護和增加功能。
關(guān)于c++的語言復(fù)雜性,你可以問知乎上的任何一位高手。沒一個敢說自己精通c++。你也可以去看一下所有的c++編繹器,沒有任何一個敢說自己完全實現(xiàn)了c++的標準。不同的編繹器之間實現(xiàn)細節(jié)又不同。所以功能再強大沒有實用性,就失去了意義,只會制造更多的問題。
首先,Java、Python、Go、C++等編程語言都是目前在IT行業(yè)內(nèi)被廣泛使用的編程語言,除了Go語言之外,其他語言也都有大量的成熟案例,所以對于初學(xué)者來說,這些編程語言都是不錯的選擇。
從語言自身的難易程度上來說,Python語言和Go語言在語法結(jié)構(gòu)上要更加簡潔一些,Java和C++語言要稍微復(fù)雜一些,當然這也與編程語言的設(shè)計思想有直接的關(guān)系。對于計算機基礎(chǔ)比較薄弱的人來說,從Python語言開始學(xué)起是個不錯的選擇。目前Python語言的上升勢頭比較明顯,伴隨著大數(shù)據(jù)和人工智能的發(fā)展,未來Python語言的應(yīng)用范圍將得到進一步擴大,尤其是產(chǎn)業(yè)互聯(lián)網(wǎng)階段。
其次,程序開發(fā)人員能否在程序開發(fā)的道路上走得更遠,編程語言只是其中的一個因素,更重要的因素在于自身的研發(fā)能力,其實編程語言只是一個工具而已。曾經(jīng)流傳這樣一個說法:一流程序員靠數(shù)學(xué);二流程序員靠算法;三流程序員靠邏輯;四流程序員靠SDK,再往后就是靠各種搜索引擎和編程博客了。從這個角度來看,編程語言對于程序員能力的影響是有限的。
最后,編程的過程說到底就是數(shù)學(xué)問題,所以研發(fā)級程序員往往都需要具備扎實的數(shù)學(xué)基礎(chǔ),一個程序員最終能夠成長的高度往往是由數(shù)學(xué)等基礎(chǔ)學(xué)科決定的。如果單純的從編程語言的角度出發(fā),目前Python和Go的發(fā)展趨勢更明顯一些。