Go語言性能好、語法簡單、開發效率高_第1頁
Go語言性能好、語法簡單、開發效率高_第2頁
Go語言性能好、語法簡單、開發效率高_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Go 語言給我的第三個驚喜,是 interface 。Go 語言的 interface ,并非是你在 Java和 C#中看到的 interface ,盡管看起來有點像。 Go 語言的 interface 是非侵入式的接口,具體表現在實現一個接口不需要顯式地進行聲明。不 過,讓我意外的不是 Go語言的非侵入式接口,非侵入式接口只是我接受Go語言的基礎。在接口(或契約)的表達上,我一直認為Java和 C#這些主流的靜態類型語言都走錯了方向。 C+的模板盡管機制復雜,但是走在了正確的方向上。C+0x(后來的 C+11)呼聲很高的 concept 提案被否,著實讓不少人傷了心。但 Go 語言的 int

2、erface 遠不是非侵入式接口那么簡單,它是 Go 語言類型系統的綱,這表現在:1只要某個類型實現了接口要的方法,那么我們說該類型實現了此接口。該類型的對象可賦值給該接口。2作為 1的推論,任何 Go語言的內置對象都可以賦值給空接口interface 。3支持接口查詢。如果你曾經是 Windows 程序員,你會發現 COM 思想在 Go語言中通過 interface 優雅呈現。并且 Go 語言吸收了其中最精華部分,而 COM 中對象生命周期管理 的負擔,卻因為 Go 語言基于 GC(垃圾回收機制)方式的內存管理而不復存在。Go 語言給我的第四個驚喜,是極度簡化但完備的“面向對象編程(OOP)

3、”方法。Go 語言廢棄大量的 OOP特性,如繼承、構造 /析構函數、虛函數、函數重載、默認參數等,簡化的符號訪問權限控制、將隱藏的 this指針改為顯式定義的 receiver 對象。 Go語言 讓我看到了 OOP 編程核心價值原來如此簡單只是多數人都無法看透。Go 語言帶給我的第五個驚喜,是它的錯誤處理規范。Go 語言引入了內置的 error 類型及 defer 關鍵字來編寫異常安全代碼,讓人拍案叫絕。下面這個例子,我在多個場合都提過。f, err := os.Open(file)if err != nil . / error processingreturndeferf.Close().

4、/ process file dataGo 語言帶給我的第六個驚喜,是它功能的內聚。一個最典型的案例是 Go語言的組合功能。對于多數語言來說,組合只是形成復合類型的基本手段,這一點只要想想C語言的 struct 就清楚了。但 Go 語言引入了匿名組合的概念,它讓其他語言原本需要引入繼承這一新概念來完成事情,統一又到了組合這樣的一個基礎上。在 C+中,你需要這樣定義一個派生類。class Foo : public Base ;在 Go 語言中你只要type Foo struct Base更有甚者, Go 語言的匿名組合允許組合一個指針。type Foo struct *Base這個功能可以實現

5、C+中一個無比晦澀難懂的特性,叫“虛擬繼承”。但同樣的問題,換從組合角度來表達,直達問題的本質,清晰易懂。Go 語言帶給我的第七個驚喜,是消除了堆與棧的邊界。在 Go語言之前,程序員是清楚地知道哪些變量在棧上,哪些變量在堆上。堆與棧是基于現代計算機系統的基礎工作模型上形成的概念,Go 語言屏蔽了變量定義在堆還是棧上這樣的物理結構,相當于封裝了一個新的計算機工作模型。這一點看似與Go語言顯式表達的設計哲學不太一致,但我個人認為這是一項了不起的工作,而且與Go 語言的顯式表達并不矛盾。 Go 語言強調的是對開發者的程序邏輯(語義)的顯式表達,而非對計算機硬件結構的顯示表達。對計算機硬件結構的高度抽

6、象,將更有助于 Go語言適應未來計算機 硬件發展的變化。Go 語言帶給我的第八個驚喜,是 Go 語言對 C 語言的支持。Go可以這么說, Go 語言是除了 Objective-C、C+這兩門以兼容 C為基礎目標的語言之外的所有語言中,對C語言支持最友善的一個。什么語言可以直接嵌入C代碼?沒有,除了語言。什么語言可以無縫調用 C函數?沒有,除了 Go 語言。對 C語言的完美支持,是 Go 語言快速崛起的關鍵支撐。還有比 C語言更讓人覬覦的社區財富么?那是一個取之不盡 的金礦??偠灾?Go語言是一門非常具變革性的語言。盡管這四十多年來(從 1970年 C語言誕生開始算起)出現的語言非常之多,各

7、有各的特色,讓人眼花繚亂。但是我個人固執地 認為,談得上突破了 C語言思想,將編程理念提高到一個新高度的,僅有Go 語言而已。Go 語言很簡單,但是具備極強的表現力。從目前的狀態來說, Go 語言主要關注服務器領域的開發,但這不會是 Go 語言的完整使命。我們說 Go 語言適合服務端開發,僅僅是因為它的標準庫支持方面,目前是向服務端開發傾斜: 網絡庫(包括 socket 、 http 、 rpc 等) 編碼庫(包括 json 、 xml 、 gob 等) 加密庫(各種加密算法、摘要算法,極其全面) Web (包括 template 、 html 支持)而作為桌面開發的常規組件: GDI和 UI 系統與事件處理,基本沒有涉及。盡管 Go還很年輕, Go語言 1.0 版本在 20XX年3月底發布,到現在才 1年多,然而 Go語言已經得到了非常普遍的認同。在國外,有人甚至提出“ Go語言將制霸云計算領域”。 在國內,幾乎所有你聽到過名字的大公司(騰訊、阿里巴巴、京東、360、網易、新浪、金山、豆瓣等等

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論