<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    為什么不使用 Go 語言呢?

    發布時間:2012-8-19 18:36    發布者:1770309616
    關鍵詞: Go , 語言
    Go是一個來源于C語言的編程語言,在保留了C語言的簡約風格的同時也進行了很多改進。 今年的早些時候我們對比過了幾種native編程語言,包括D語言、Go、Rust和Vala。這里我們將分析來自Google的Go語言,看看他到底哪里跟別的語言不一樣。Go語言比其他的很多語言都吸引我,雖然我不是Go語言的專家,但是我很樂意在這里介紹一下它的特性,下面的這些特性指引我轉向了Go語言。

    快速簡單的編譯:


    go語言編譯的很快,事實上,他快的甚至可以作為腳本語言了。幾個使他編譯很快的原因有:
    他不使用頭文件 當A依賴B,B又依賴C時,那么首先會編譯C,然后是B和A;但是如果A依賴B,但是A并不直接依賴于C,而是存在依賴傳遞,這時會把所有B需要從C拿到的信息放在B的對象代碼里。這樣,當編譯A的時候,就不需要再管C了。 在編譯程序時,只需將類型信息沿著依賴關系樹向上遍歷即可,如果到達樹的頂端,則只需編譯緊鄰的依賴,而不用管其它層級的依賴了。
    通過多返回值的錯誤處理:


    現代的編程語言基本上有兩種錯誤處理辦法,例如在C語言里是使用返回值,而在Java等面向對象語言里使用異常處理返回值,因為返回值的狀態碼總是可能跟需要返回的結果有沖突。Go語言允許多返回值,從某種程度上解決了這個問題。你可以為你的函數的執行結果狀態定義返回值,任何調用的時候都可以來檢查,很方便。

    簡單的組合:

    可以使用interface為對象指定一些類型的成員,還可以像Java一樣給他們指定操作(行為)。例如在標準庫的io包中定義了一個Writer,就有一個帶有字節數組作為參數(輸入)一個integer值和錯誤碼作為返回值(輸出)的方法。而實現了io.Writer接口中的Write方法的類型才是實際被執行的。這個設計能夠非常優雅的分離代碼,還簡化了單元測試過程,例如,如果你想測試一個數據庫對象的一個方法,在傳統的語言中你必須創建一個數據庫對象,然后做很多協議初始化工作。在Go語言中,你可在接口下創建任何對象。

    簡單的并發:

    在Go中并發變得非常的簡單,在任何函數前方上go兩個字母,這個函數就將以他自己的go-routine(一個非常輕量級的線程)來運行,Go- routines之間通過channels來通信。我們通常會有一些需要線程同步和互斥的需求,在Go中非常簡單,Go只是啟動并發任務,各個任務之間通過channels來通信,從而協調同步和互斥。
    優秀的錯誤提示:

    我從沒見過別的語言有Go語言這么高的錯誤診斷質量。例如如果你的程序思索了,Go的運行時可以通知你,而且,他甚至可以告訴你是哪個線程出了問題。當然編譯錯誤也是很詳細很有用的。

    其他特性:

    Go語言還有其他非常吸引人的特性:高階函數、垃圾回收、哈希映射、可擴展的數組等等。

    當然了,沒有一件東西是非常完美的,Go語言的開發工具還非常缺乏,社區很小,但是這個語言的背后支持者是Google,這些問題都會一步一步的解決。當其他語言,尤其是D語言、Rust、Vala旨在簡化C++而且增加新的特性的時候,他們都覺得自己像是帶著新特性的C++。而Go語言更多的是在反思一個Native語言應該是怎么樣的。即使你沒有特別考慮要使用Go語言,我想,即便哪怕是嘗試一下,你將會發現你已經很欣賞他的很多特性了。

    OSChina.NET原創翻譯/  原文鏈接
    本文地址:http://www.portaltwn.com/thread-95976-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷