久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

為什么大家都選擇go語言?

今天馬哥教育就給大家分享的文章是為什么大家都選擇用go語言?我覺得選擇用go語言的原因有很多,go語言用于服務器端開發,適合很多程序員一起開發大型的軟件,并且在軟件的不斷增長過程中,他能讓程序員更容易的驚醒修改,想要go語言入門學習go語言的小伙伴一定要看看了,希望對大家有幫助。

靜態,go是一門靜態語言,有著強類型約束,所以我們不太可能出現在Python中變量在運行時類型不匹配(譬如int + string)這樣的runtime error。 在編譯階段就能夠幫我們發現很多問題,不用等到運行時。(當然,這個靜態語言都能做到)

代碼規范,很多人都比較反感go強制的編碼規范,譬如花括號的位置。但我覺得,就因為強制約定,所以大家寫出來的go代碼樣子都差不多,不用費心再去深究代碼樣式問題。而且我發現,因為規范統一,我很容易就能理解別人寫的代碼。

庫支持,go的庫非常豐富,而且能通過go get非常方便的獲取github,google code上面的第三方庫(質量你自己得擔著了),再不行,用go自己造輪子也是很方便的,而且造的輪子通常都比較穩定。

開發迅速,不得不說,當你習慣用go開發之后,用go開發功能非常的快,相對于靜態語言c++,開發的效率快的沒話說,我覺得比Python都不差,而且質量有保證。我們花了不到一個星期進行推送服務核心功能開發,到現在都沒怎么變動,穩定運行。

部署方便,因為是靜態的,只需要build成一個可運行程序就可以了,部署的時候直接扔一個文件過去,不需要像Python那樣安裝太多的依賴庫。

GO特性:

gc

GO提供了gc,這對于c++的童鞋來說,極大的減少了在內存上面犯錯的機會,只是go的gc這個效率還真的不好恭維,比起java來說,還有很大的提升空間。

所以有時候寫代碼,我們還得根據tuning來提升gc的效率,譬如采用內存池的方式來管理大塊的slice分配,采用no copy的方式來進行string,slice的互轉。

不過go1.3貌似gc性能有了很大的改善,這點讓我比較期待。

defer

go的defer其實是一個讓人又愛又恨的東西,對于防止資源泄露,defer可是一個很不錯的東西,但是濫用defer可是會讓你面臨很嚴重的內存問題,尤其是像下面的代碼:

for {

defer func(){

//do somthing

}

}

別以為go會在調用完成defer之后就好好的進行gc回收defer里面的東西,在我們進行內存profile的時候,發現大量的內存占用都是defer引起的。所以使用起來需要特別謹慎。

但我覺得,這個go應該會稍微改善,在go1.3里面,也有了對defer的優化。

error

也許error是一個讓人爭議很大的東西,現代方式的exception那里去呢?但是我覺得error能夠非常明確的告訴使用者該函數會有錯誤返回,如果使用exception,除非文檔足夠詳細,我還真不知道哪里就會蹦出一個異常了。

其實這篇文章我覺得已經解釋的很好了,go程序的慣例是對外的API使用error,而內部錯誤處理可以用defer,recover和panic來簡化流程。

其實這倒跟我一貫的編程準則對應,在團隊在用Python進行開發的時候,我們都明確要求庫對外提供的API需要使用返回值來表示錯誤,而在內部可以使用try,catch異常機制。

interface

go提供了interface來進行抽象編程。何謂接口,最通常的例子就是鴨子的故事,“當看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子“。

在go里面,interface就是一堆方法的集合,如果某個對象實現了這些方法,那么該對象可以就算是該interface。使用interface,我們可以很方便的實現非侵入式編程,進行模塊功能的替換。

對于長時間沉浸c++和Python的童鞋來說,一下子要用interface來解決抽象問題,可能會很不適應。但當習慣之后,你會發現,其實interface非常的靈活方便。

基于哪些痛點設計出Go語言?

當初他們為什么會有設計一個新語言的沖動呢?讓我們一起來回顧一下這些歷史,也許很多人對他們當年遇到的問題感同身受。

設計Go語言是為了解決當時Google開發遇到的以下這些問題:

大量的C++代碼,同時又引入了Java和Python

成千上萬的工程師

數以萬計行的代碼

分布式的編譯系統

數百萬的服務器

其主要有以下幾個方面的痛點:

編譯慢

失控的依賴

每個工程師只是用了一個語言里面的一部分

程序難以維護(可讀性差、文檔不清晰等)

更新的花費越來越長

交叉編譯困難

以上就是小編今天給大家分享的go語言的知識,設計Go的目標是為了消除各種緩慢和笨重、改進各種低效和擴展性。Go是由那些開發大型系統的人設計的,同時也是為了這些人服務的;它是為了解決工程上的問題,不是為了研究語言設計;它還是為了讓我們的編程變得更舒適和方便!想要了解更多關于go語言的知識,可以關注馬哥教育的官網,獲取更多的資訊!

聲明:文章來源于網絡,侵刪!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 东阳市| 永寿县| 长宁县| 禄丰县| 微博| 江达县| 酉阳| 黑水县| 南丹县| 阿勒泰市| 永州市| 武鸣县| 鹰潭市| 阜宁县| 定安县| 航空| 汝城县| 达尔| 清涧县| 武冈市| 阜新市| 宝丰县| 勐海县| 临颍县| 上栗县| 博兴县| 阿克苏市| 云浮市| 伊川县| 五常市| 临城县| 枣强县| 河北省| 蓬安县| 阿巴嘎旗| 南投市| 北票市| 钟祥市| 兴山县| 舞阳县| 上饶市|