GO語言由Google公司開發(fā),并于2009年開源,對比Java、Python、C等語言,GO尤其擅長并發(fā)編程,性能堪比C語言,開發(fā)效率比肩Python,被譽為21世紀的C語言。GO語言在云計算、大數(shù)據(jù)、微服務、高并發(fā)領域,應用非常廣泛。BAT大廠正在把GO作為新項目開發(fā)的首選語言。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供資溪網(wǎng)站建設、資溪做網(wǎng)站、資溪網(wǎng)站設計、資溪網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、資溪企業(yè)網(wǎng)站模板建站服務,十多年資溪做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
1. 保留但大幅度簡化指針
Go語言保留著C中值和指針的區(qū)別,但是對于指針繁瑣用法進行了大量的簡化,引入引用的概念。所以在Go語言中,你幾乎不用擔心會因為直接操作內(nèi)寸而引起各式各樣的錯誤。
2. 多參數(shù)返回
還記得在C里面為了回饋多個參數(shù),不得不開辟幾段指針傳到目標函數(shù)中讓其操作么?在Go里面這是完全不必要的。而且多參數(shù)的支持讓Go無需使用繁瑣的exceptions體系,一個函數(shù)可以返回期待的返回值加上error,調(diào)用函數(shù)后立刻處理錯誤信息,清晰明了。
3. Array,slice,map等內(nèi)置基本數(shù)據(jù)結構
如果你習慣了Python中簡潔的list和dict操作,在Go語言中,你不會感到孤單。一切都是那么熟悉,而且更加高效。如果你是C++程序員,你會發(fā)現(xiàn)你又找到了STL的vector 和 map這對朋友。
4. Interface
Go語言最讓人贊嘆不易的特性,就是interface的設計。任何數(shù)據(jù)結構,只要實現(xiàn)了interface所定義的函數(shù),自動就implement了這個interface,沒有像Java那樣冗長的class申明,提供了靈活太多的設計度和OO抽象度,讓你的代碼也非常干凈。千萬不要以為你習慣了Java那種一條一條加implements的方式,感覺還行,等接口的設計越來越復雜的時候,無數(shù)Bug正在后面等著你。
同時,正因為如此,Go語言的interface可以用來表示任何generic的東西,比如一個空的interface,可以是string可以是int,可以是任何數(shù)據(jù)類型,因為這些數(shù)據(jù)類型都不需要實現(xiàn)任何函數(shù),自然就滿足空interface的定義了。加上Go語言的type assertion,可以提供一般動態(tài)語言才有的duck typing特性, 而仍然能在compile中捕捉明顯的錯誤。
5. OO
Go語言本質上不是面向對象語言,它還是過程化的。但是,在Go語言中, 你可以很輕易的做大部分你在別的OO語言中能做的事,用更簡單清晰的邏輯。是的,在這里,不需要class,仍然可以繼承,仍然可以多態(tài),但是速度卻快得多。因為本質上,OO在Go語言中,就是普通的struct操作。
6. Goroutine
這個幾乎算是Go語言的招牌特性之一了,我也不想多提。如果你完全不了解Goroutine,那么你只需要知道,這玩意是超級輕量級的類似線程的東西,但通過它,你不需要復雜的線程操作鎖操作,不需要care調(diào)度,就能玩轉基本的并行程序。在Go語言里,觸發(fā)一個routine和erlang spawn一樣簡單?;旧弦莆誈o語言,以Goroutine和channel為核心的內(nèi)存模型是必須要懂的。不過請放心,真的非常簡單。
7. 更多現(xiàn)代的特性
和C比較,Go語言完全就是一門現(xiàn)代化語言,原生支持的Unicode, garbage collection, Closures(是的,和functional programming language類似), function是first class object,等等等等。
看到這里,你可能會發(fā)現(xiàn),我用了很多輕易,簡單,快速之類的形容詞來形容Go語言的特點。我想說的是,一點都不夸張,連Go語言的入門學習到提高,都比別的語言門檻低太多太多。在大部分人都有C的背景的時代,對于Go語言,從入門到能夠上手做項目,最多不過半個月。Go語言給人的感覺就是太直接了,什么都直接,讀源代碼直接,寫自己的代碼也直接。
Go語言于2009年11月正式宣布推出,成為開放源代碼項目,并在Linux及Mac OS X平臺上進行了實現(xiàn),后追加Windows系統(tǒng)下的實現(xiàn)。
谷歌資深軟件工程師羅布·派克(Rob Pike)表示,“Go讓我體驗到了從未有過的開發(fā)效率。”派克表示,和今天的C++或C一樣,Go是一種系統(tǒng)語言。他解釋道,“使用它可以進行快速開發(fā),同時它還是一個真正的編譯語言,我們之所以現(xiàn)在將其開源,原因是我們認為它已經(jīng)非常有用和強大?!?/p>
2007年,谷歌把Go作為一個20%項目開始研發(fā),即讓員工抽出本職工作之外時間的20%,投入在該項目上。除了派克外,該項目的成員還有其它一些谷歌工程師。
派克表示,編譯后Go代碼的運行速度與C語言非常接近,而且編譯速度非??欤拖裨谑褂靡粋€交互式語言。
現(xiàn)有編程語言均未專門對多核處理器進行優(yōu)化。派克表示,Go就是谷歌工程師為這類程序編寫的一種語言。它不是針對編程初學者設計的,但學習使用它也不是非常困難。Go支持面向對象,而且具有真正的封裝(closures)和反射(reflection)等功能。
在學習曲線方面,派克認為Go與Java類似,對于Java開發(fā)者來說,應該能夠輕松學會Go。
之所以將Go作為一個開源項目發(fā)布,目的是讓開源社區(qū)有機會創(chuàng)建更好的工具來使用該語言,例如Eclipse IDE中的插件。目前還沒有支持Go的IDE。
在目前谷歌公開發(fā)布的所有網(wǎng)絡應用中,均沒有使用Go。但是谷歌已經(jīng)使用該語言開發(fā)了幾個內(nèi)部項目。
派克表示,Go是否會對谷歌即將推出的Chrome OS產(chǎn)生影響,現(xiàn)在還言之尚早,不過Go的確可以和Native Client配合使用。他表示,“Go可以讓應用完美的運行在瀏覽器內(nèi)?!崩?,使用Go可以更高效的實現(xiàn)Wave,無論是在前端還是后臺。
Go語言是一種新的語言,一種并發(fā)的、帶垃圾回收的、快速編譯的語言。它具有以下特點:
1.它可以在一臺計算機上用幾秒鐘的時間編譯一個大型的Go程序。
2.Go語言為軟件構造提供了一種模型,它使依賴分析更加容易,且避免了大部分C風格include文件與庫的開頭。
3.Go語言是靜態(tài)類型的語言,它的類型系統(tǒng)沒有層級。因此用戶不需要在定義類型之間的關系上花費時間,這樣感覺起來比典型的面向對象語言更輕量級。
4.Go語言完全是垃圾回收型的語言,并為并發(fā)執(zhí)行與通信提供了基本的支持。
按照其設計,Go打算為多核機器上系統(tǒng)軟件的構造提供一種方法。
Go語言是一種編譯型語言,它結合了解釋型語言的游刃有余,動態(tài)類型語言的開發(fā)效率,以及靜態(tài)類型的安全性。它也打算成為現(xiàn)代的,支持網(wǎng)絡與多核計算的語言。要滿足這些目標,需要解決一些語言上的問題:一個富有表達能力但輕量級的類型系統(tǒng),并發(fā)與垃圾回收機制,嚴格的依賴規(guī)范等等。這些無法通過庫或工具解決好,因此Go也就應運而生了。
看今年二月份的go語言占比,go語言還是在緩慢上升。這門語言目前看還是比較有前景的,如果你對go語言感興趣,你可以轉。
分享標題:go語言費用,go語言的效率
標題URL:http://jinyejixie.com/article48/hseshp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、微信小程序、關鍵詞優(yōu)化、網(wǎng)頁設計公司、自適應網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)