在過去幾年,有一門崛起的新語言:Go 或者 GoLang,沒有什么比一門新的編程語言更令開發者興奮了,不是么? 自從我開始學習golang后,我便放棄了我的php大業,雖然php號稱“php是世界上最好的語言”,但是通過實戰證明,golang更香甜,
為什么要學go語言?
扯太高大上的優勢我也說不上來,我就從我切身經歷的幾個方面說說我為什么學golang吧,這些都是真實的需求對比,它制約著我前進的步伐,
在php開發的時候,我經常遇到一些不太好解決的問題:
- php只能單執行緒執行任務,在比如在采集任務中,它需要抓完一個網頁,再接著抓第二個網頁,這效率嚴重低下,無法忍受之痛,雖然在服務器上跑可以使用計劃任務開多個php行程,但是記憶體開銷又變得太大了,
- 在用php開發的網站中,url請求的內容只能等服務器端執行完畢才能回應給客戶端,無法異步執行,這個問題比較頭疼,比如提交的連接要檢查頁面狀態,提交的時候直接檢查的話,就需要用戶等待較長時間,雖然可以變相使用計劃任務配合執行,但是終究不完美,并不是我想要的解決方案,
- 在php中,如果程式有比較多curl請求網路任務,并且連接遲遲沒結束的話,它很容易就導致網站出現502的問題,雖然可以通過設定curl超時時間來降低發生頻率,但是它始終是一個懸在頭上的問題,
- 大佬公司都在轉go,七牛、阿里、百度、騰訊、頭條、京東、嗶哩嗶哩等,跟上時代步伐,才不會被時代淘汰,
- 執行速度問題,我只想讓網站更快的展示給用戶,
以上的種種,導致了我要尋找一門語言去克服它,通過多方對比后,golang可以完美解決我遇到的問題,所以,我就開始了學習golang之旅,
golang的優勢有哪些?
網上很多關于介紹golang優勢的文章,無異于都是在說硬體局限性問題、goroutine、直接在硬體上跑、易于維護、google背書等,這些優勢我就不再一一重復了,因為大家搜索答案的時候,已經多次看到了,我再補充一些其他優勢,
- 簡單好記的關鍵詞和語法,golang語法簡單,這個是真的簡單,即使從來沒接觸過過編程的用戶,都可以輕松上手,比c++、java更簡單易學,甚至比php學起來都輕松,與同為強型別語言的比c++比,更是簡單得多,雖然簡單,但是實作起功能來,一點也不含糊,
- 更高的效率,更快的開發效率、更高的編譯速度,比java、c++編譯速度上快了N個數量級,golang擁有接近C的運行效率和接近php的開發效率,
- 網路庫非常強大,一般大塊的功能實作,都有現成的庫可以直接使用,不知道庫地址都不要緊,你想要什么功能的實作,用瀏覽器打開github,或網速慢的用戶打開gitee,搜索你想要的功能的關鍵詞,選擇go專案,基本上都能找到你想要的功能,然后,直接將他的庫拉下來使用就可以啦,
- 嚴格的依賴管理,本身禁止回圈依賴,依賴的管理命令也很簡單,go mod 命令就可以解決一切依賴,Go擁有強大的編譯檢查、嚴格的編碼規范和完整的軟體生命周期工具,具有很強的穩定性,穩定壓倒一切,編譯的時候就將可能埋雷的地方給掐死了,放心,這是一個很好的檢查,可以讓你的代碼更規范,
- 跨平臺交叉編譯,直接生成可執行二進制檔案發布,比如我只有Windows系統,我依然可以直接編譯出在mac、linux上可執行的程式,是不是很爽,省錢能手,還省去了分別部署環境的問題,當然更重要的是,代碼不會暴露了,對于商業保護來說,特別是開發php專案,想要代碼不被破解,簡直是難于登天,這樣一下子好了,發布一個執行檔案,安全,這一點是很多人選擇Go的最大理由,因為部署太方便了,所以現在也有很多人用Go開發運維程式,
- 并發和異步執行不要太簡單,一個go關鍵詞就搞定了,前臺提交了個url需要檢測,go checkUrl(link)開啟一個goroutine讓它慢慢跑吧,不要堵住主行程,需要采集的網頁數量有點多,一個個回圈采集那是要等到何年何月才能采集完啊,開100個chan,100倍的速度跑起來,只要你的帶寬足夠大,就不怕它跑不快(此處建議拉一根500M帶寬的網線),
- 嚴格的語言規范,變數一定要宣告,用不到的包不能引進來,大寫字母開頭的函式、結構體變數是公開訪問的,小寫的是私有的,沒有三目運算,嚴格的變數型別轉換,所有寫go的程式員都統一一樣的規范,你只能按照這些規范來寫代碼,從此不再有為標準思前想后、爭來吵去了,代碼清晰了,可讀性高了,可維護性自然就好了,

golang 總結
golang的背后,真的是google,go的創始者都是大牛,他們開發和開源go出來,就是為了解決已有的老語言無法更高效的為軟體開發作業的問題,golang實作了媲美c++的執行速度,比java更簡單的語法特點、編譯速度接近php語言等,讓他成為開發語言中的一個新貴,它讓開發變得更加簡單,做開發,不就是要追求易學易用嘛,golang再合適不過了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232127.html
標籤:其他
