golang初體驗

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

這一周終於抽空讀完了許式偉先生的《go語言編程》。由於對go並發的支援高度興趣,很早之前就想學一學go語言,這次由於6.824的課程作業的需要,終於認真的學習了一下。


就這幾天的學習而言,我覺得有c/c++和python基礎的同學應該很容易就上手go。下面我就從幾個方面對比一下這幾門語言,看看go究竟有哪些優秀的特點。


####基本類型

c作為一門有著悠久曆史的語言,缺乏語言層面上對一些現在常用的進階資料結構的支援,而go卻擁有python中常用的列表和字典,不過在go中,他們分別叫做數組切片和字典類型,用法上有一些不同,卻都提供了需要的功能,這一點上,go比起c要自己手寫資料結構要方便很多。但是,相比於python這種純物件導向的設計,go還是保留了c中最為強大的指標。但是考慮到下面要提到的GC的支援,go對指標的使用做了一定的限制,比如不能在go中進行指標的運算。


####GC

記憶體泄露和野指標的問題一直是c/c++程式員的頭疼的地方,由於c/c++的使用情境和更加追求效能的目標,為它們加上GC是不太可能的。為了方便程式員的使用,c++11提供了智能指標,這多少可以緩和一下c++項目中記憶體泄露的問題。但是go作為一門新出的語言,在一開始就不想讓程式員在手工管理記憶體的坑裡掙紮,提供GC也基本上是現代語言的標配。go的GC在早期的版本中多少在速度上還為人所詬病,但是到了1.5之後,go終於有了低延時的GC,這讓它又多了一把利器。


####錯誤處理

go提供了defer,panic和recover三個關鍵字來用作錯誤處理。其中defer是讓人眼前一亮的,有了它就再也不用在函數的末尾考慮資源的回收。相比於複雜而且難用的c++的異常機制,真是好用的不要太多。


####interface

我一直在好奇,這個特性為什麼其他語言一直沒有提出,也許是物件導向的設計實在太過紮根在腦中。而go從一開始就不打算提供語言層面上的繼承,用組合來代替繼承,用interface來代替多態。對代碼的侵入性小,學起來也幾乎沒有門檻。interface基本上是go給我們的最好的特性,甚至在某種層度上比goroutine還要重要。我懷疑這是不是受到了像python這樣的動態語言影響,go的interface也是採用了duck type的思想,有什麼樣的方法就認為是什麼樣的類型。在使用上會讓人很舒服,從找到的資料上來看,也能完全代替其他進階語言中的繼承+多態的組合。


####goroutine

這個特性是go這門語言名字的由來,也是我最初接觸到go的原因。協程並不是一個全新的概念,python也可以通過yield來類比。但是在語言層面上的支援卻成了go最大的賣點,通過goroutine,go又有了並發這個大利器。只是目前預設只使用了單核,但是可以預見在不久之後,對多核預設的支援也會到來


其實go還有很多其他的特性,比如工程管理,手寫過Makefile的同學應該知道管理一個c工程的麻煩,這也是為什麼會有automake,cmake這些工具出現的原因。但是, 使用go,你只用按照格式組織好你的工程目錄,剩下的就交給go來考慮吧。


go的定位是21世紀的c語言,不過從現在來看,想要完全取代c語言還不太可能,可是在伺服器端編程的領域,已經可以越來越多的看到go的身影,當然這也和它有一個好爹脫不了關係。無論如何,go語言都值得一學,畢竟也挺好上手的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.