Golang 介紹

Golang 介紹

更多內(nèi)容可參考:http://blog.hyrscloud.com/topic/index?id=17

背景:golang語(yǔ)言的發(fā)起主要是為了解決C++中出現(xiàn)的問(wèn)題。傳統(tǒng)的語(yǔ)言比如c++,大家花費(fèi)太多時(shí)間來(lái)學(xué)習(xí)如何使用,而不是如何更好的表達(dá)寫程序員的思想,同時(shí)編譯的時(shí)間太長(zhǎng),對(duì)于編寫-編譯-運(yùn)行這個(gè)鏈條來(lái)說(shuō)周期太長(zhǎng)。動(dòng)態(tài)語(yǔ)言如Python,由于沒(méi)有強(qiáng)類型的約束,很多問(wèn)題需要在運(yùn)行時(shí)發(fā)現(xiàn),這種低級(jí)錯(cuò)誤更應(yīng)該交給編譯器來(lái)發(fā)現(xiàn)。同時(shí)有如下趨勢(shì):人力成本越來(lái)越高、機(jī)器越來(lái)越便宜、性能越來(lái)越厲害、在開(kāi)發(fā)效率和運(yùn)行速度上達(dá)到平衡,這是golang誕生的背景。

Go的思維方式:最小心智負(fù)擔(dān)原則、最小特性、最少驚異、最少犯錯(cuò)機(jī)會(huì)。

Go的目標(biāo)是成為互聯(lián)網(wǎng)的c語(yǔ)言,在保持了c簡(jiǎn)單明了的基礎(chǔ)上,同時(shí)加入了一些自己的特性:少就是指數(shù)級(jí)的多、最少特性原則(如果一個(gè)功能不對(duì)解決任何問(wèn)題有顯著價(jià)值,那么就不提供)、顯式表達(dá)(所寫即所得)、極度簡(jiǎn)化但完備的OOP(面向?qū)ο缶幊蹋?、功能?nèi)聚、友善的C語(yǔ)言支持;

  • Go 語(yǔ)言是谷歌2009發(fā)布的第二款開(kāi)源編程語(yǔ)言。

  • Go 語(yǔ)言專門針對(duì) 多處理器系統(tǒng) 應(yīng)用程序的編程進(jìn)行了優(yōu)化,使用 Go 編譯的程序可以媲美 C 或 C++ 代碼的速度,而且更加安全、支持并行進(jìn)程。

  • Google 對(duì) Go 寄予厚望。其設(shè)計(jì)是讓軟件充分發(fā)揮多核心處理器同步多工的優(yōu)點(diǎn),并可解決面向?qū)ο蟪绦蛟O(shè)計(jì)的麻煩。

  • 以軟件工程為目的的語(yǔ)言設(shè)計(jì)

    • 快速編譯,使用了更加智能的編譯器,并簡(jiǎn)化了解決依賴的算法,最終提供了更快的編譯速度。

    • 嚴(yán)格的依賴管理(沒(méi)有依賴地獄,甚至是glibc)、代碼風(fēng)格的強(qiáng)一致性、偏向組合而不是繼承;

    • 編譯一次,隨處拷貝,部署極為方便;

    • 交叉編譯只是一個(gè)環(huán)境變量的問(wèn)題;

  • Go對(duì)OOP(Object Oriented Programming面向?qū)ο螅┑闹С钟腥缦绿攸c(diǎn)

    • 返璞歸真,沒(méi)有繼承,只有組合;

    • 明確區(qū)分復(fù)用和抽象,復(fù)用使用組合,抽象使用;

    • 所見(jiàn)即所得,明確的內(nèi)存模型,沒(méi)有vtable之類的東西;

    • 鴨子類型,抽象更方面(鴨子類型是動(dòng)態(tài)類型和某些靜態(tài)語(yǔ)言的一種對(duì)象推斷風(fēng)格)

  • Go對(duì)并發(fā)的支持是一個(gè)重要的特性,go有兩大神器來(lái)支持并發(fā)

    • go routine:輕量的”線程“;

    • channel:帶類型的,協(xié)程安全的管道,類似unix里面的pipe;

  • 內(nèi)存管理:有專門的垃圾回收機(jī)制

  • Go語(yǔ)言的類型系統(tǒng)(接口):Go 語(yǔ)言提供了靈活的、無(wú)繼承的類型系統(tǒng),無(wú)需降低運(yùn)行性能就能最大程度上復(fù)用代碼。

Go最主要的特性:

  • 自動(dòng)垃圾回收

  • 更豐富的內(nèi)置類型

  • 函數(shù)多返回值

  • 錯(cuò)誤處理

  • 匿名函數(shù)和閉包

  • 類型和接口

  • 并發(fā)編程

  • 反射

  • 語(yǔ)言交互性

Go的領(lǐng)域應(yīng)用

  • Docker,正火熱的容器化技術(shù)。

  • kubernetes,Goole Borg的開(kāi)源實(shí)現(xiàn)。

  • Etcd, 類似zookeeper的高可用key-value存儲(chǔ)。

  • TIDB, 國(guó)人開(kāi)發(fā)的Google spanner的開(kāi)源實(shí)現(xiàn)。

  • 在區(qū)塊鏈領(lǐng)域,真正的首選語(yǔ)言是 Go 語(yǔ)言,以太坊都是基于 Go 語(yǔ)言開(kāi)發(fā)的。

  • 由于golang編程簡(jiǎn)單,編譯速度快,非常適合游戲服務(wù)器開(kāi)發(fā)。

  • Golang 以其在高并發(fā)場(chǎng)景下的天然優(yōu)勢(shì)等特性,已經(jīng)成為今天開(kāi)發(fā)分布式系統(tǒng)的首選語(yǔ)言,在云計(jì)算領(lǐng)域占據(jù)了無(wú)法替代的位置,docker就是golang開(kāi)發(fā)的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容