《go語言實戰(zhàn)》第1章 關于Go語言的介紹

第1章 關于Go語言的介紹

前言

  • Go 語言結合了底層系統(tǒng)語言的能力以及現(xiàn)代語言的高級特性,旨在降低構建簡單、可靠摔吏、高效軟件的門檻
  • Go語言是由谷歌公司在2007年開始開發(fā)的一門語言灿巧,目的是能在多核心時代高效編寫網絡應用程序赂摆。Go語言的創(chuàng)始人Robert Griesemer、Rob Pike和Ken Thompson都是在計算機發(fā)展過程中作出過重要貢獻的人
  • Go是一門開源的編程語言狸窘,目的在于降低構建簡單墩朦、可靠、高效軟件的門檻
  • Go平衡了底層系統(tǒng)語言的能力翻擒,以及在現(xiàn)代語言中所見到的高級特性氓涣。你可以依靠Go語言來構建一個非常快捷陋气、高性能且有足夠控制力的編程環(huán)境劳吠。使用Go語言,可以寫得更少巩趁,做得更多
  • 源代碼下載地址

介紹

  • 高性能服務器擁有64核痒玩、128核,甚至更多核议慰。但是我們依舊在使用為單核設計的技術在編程

  • Go語言是一種讓代碼分享更容易的編程語言蠢古。Go 語言自帶一些工具,讓使用別人寫的包更容易别凹,并且 Go 語言也讓分享自己寫的包更容易

  • 更高效地利用昂貴服務器上的所有核心便瑟,而且它編譯大型項目的速度也很快


用Go解決現(xiàn)代編程難題

  • Go語言不僅提供了高性能的語言,同時也讓開發(fā)更快速

  • Go語言的語法簡潔到只有幾個關鍵字番川,便于記憶。Go語言的編譯器速度非臣箍颍快

  • 快速瀏覽一下這些關鍵特性

開發(fā)速度

  • 編譯一個大型的C或者C++項目所花費的時間甚至比去喝杯咖啡的時間還長

  • 努力工作?
  • 編譯Go程序時颁督,編譯器只會關注那些直接被引用的庫,很多Go程序可以在1秒內編譯完浇雹。在現(xiàn)代硬件上沉御,編譯整個Go語言的源碼樹只需要20秒

并發(fā)

  • 要開發(fā)出能充分利用硬件資源的應用程序是一件很難的事情

  • Go語言對并發(fā)的支持是這門語言最重要的特性之一。goroutine很像線程昭灵,但是它占用的內存遠少于線程吠裆,使用它需要的代碼更少伐谈。通道(channel)是一種內置的數(shù)據(jù)結構,可以讓用戶在不同的goroutine之間同步發(fā)送具有類型的消息

    goroutine

    • goroutine是可以與其他goroutine并行執(zhí)行的函數(shù)试疙,同時也會與主程序(程序的入口)并行執(zhí)行诵棵。在Go語言中,net/http庫直接使用了內置的goroutine祝旷。每個接收到的請求都自動在其自己的goroutine里處理

    • 在單一系統(tǒng)線程上執(zhí)行多個goroutine
    • 執(zhí)行一段代碼同時履澳,并行去做另外一些事情的demo

    • func log(msg string) {
        // 記錄日志代碼
      }
      go log("發(fā)生了可怕的事情")
      
    • 關鍵字go是唯一需要去編寫的代碼,調度log函數(shù)作為獨立的goroutine去運行怀跛,以便與其他goroutine并行執(zhí)行距贷。這意味著應用程序的其余部分會與記錄日志并行執(zhí)行,goroutine占用的資源更少吻谋,所以常常能啟動成千上萬個goroutine

    通道

    • 通道是一種數(shù)據(jù)結構忠蝗,可以讓goroutine之間進行安全的數(shù)據(jù)通信。通道可以幫用戶避免其他語言里常見的共享內存訪問的問題
    • 為了解決這個問題漓拾,通道提供了一種新模式阁最,從而保證并發(fā)修改時的數(shù)據(jù)安全
    • 使用通道在goroutine之間安全地發(fā)送數(shù)據(jù)
    • 需要強調的是,通道并不提供跨goroutine的數(shù)據(jù)訪問保護機制晦攒。如果通過通道傳輸數(shù)據(jù)的一份副本闽撤,那么每個goroutine都持有一份副本,各自對自己的副本做修改是安全的脯颜。當傳輸?shù)氖侵赶驍?shù)據(jù)的指針時哟旗,如果讀和寫是由不同的goroutine完成的,每個goroutine依舊需要額外的同步動作

Go語言的類型系統(tǒng)

  • Go語言提供了靈活的栋操、無繼承的類型系統(tǒng)闸餐,無需降低運行性能就能最大程度上復用代碼

  • 在Go語言中,一個類型由其他更微小的類型組合而成矾芙,避免了傳統(tǒng)的基于繼承的模型

  • 在Go語言中舍沙,不需要聲明某個類型實現(xiàn)了某個接口,編譯器會判斷一個類型的實例是否符合正在使用的接口

    類型簡單

  • Go語言不僅有類似int和string這樣的內置類型剔宪,還支持用戶定義的類型

Go接口對一組行為建模

  • 接口用于描述類型的行為拂铡。如果一個類型的實例實現(xiàn)了一個接口,意味著這個實例可以執(zhí)行一組特定的行為葱绒。你甚至不需要去聲明這個實例實現(xiàn)某個接口感帅,只需要實現(xiàn)這組行為就好

內存管理

  • Go語言把無趣的內存管理交給專業(yè)的編譯器去做,而讓程序員專注于更有趣的事情

你好地淀,Go

  • 用Go語言如何編寫經典的Hello World!應用程序
  • go hello world

介紹Go Playground

  • Go Playground允許在瀏覽器里編輯并運行go語言代碼 https://play.golang.org/
  • 分享Go代碼 Go開發(fā)者使用Playground分享他們的想法失球,測試理論,或者調試代碼帮毁。你也可以這么做实苞。每次使用Playground創(chuàng)建一個新程序之后豺撑,可以點擊Share得到一個用于分享的網址。任何人都能打開這個鏈接黔牵。試試https://play.golang.org/p/U2A-jOE3DCH
  • go語言分享

1.3 小結

  • Go語言是現(xiàn)代的聪轿、快速的,帶有一個強大的標準庫
  • Go語言內置對并發(fā)的支持
  • Go語言使用接口作為代碼復用的基礎模塊
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末荧止,一起剝皮案震驚了整個濱河市屹电,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跃巡,老刑警劉巖危号,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異素邪,居然都是意外死亡外莲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門兔朦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來偷线,“玉大人,你說我怎么就攤上這事沽甥∩睿” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵摆舟,是天一觀的道長亥曹。 經常有香客問我,道長恨诱,這世上最難降的妖魔是什么媳瞪? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮照宝,結果婚禮上蛇受,老公的妹妹穿的比我還像新娘。我一直安慰自己厕鹃,他們只是感情好兢仰,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著剂碴,像睡著了一般旨别。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汗茄,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音铭若,去河邊找鬼洪碳。 笑死递览,一個胖子當著我的面吹牛,可吹牛的內容都是我干的瞳腌。 我是一名探鬼主播绞铃,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嫂侍!你這毒婦竟也來了儿捧?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤挑宠,失蹤者是張志新(化名)和其女友劉穎菲盾,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體各淀,經...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡懒鉴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了碎浇。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片临谱。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖奴璃,靈堂內的尸體忽然破棺而出悉默,到底是詐尸還是另有隱情,我是刑警寧澤苟穆,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布抄课,位于F島的核電站,受9級特大地震影響鞭缭,放射性物質發(fā)生泄漏剖膳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一岭辣、第九天 我趴在偏房一處隱蔽的房頂上張望吱晒。 院中可真熱鬧,春花似錦沦童、人聲如沸仑濒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墩瞳。三九已至,卻和暖如春氏豌,著一層夾襖步出監(jiān)牢的瞬間喉酌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泪电,地道東北人般妙。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像相速,于是被迫代替她去往敵國和親碟渺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351