為《Go語言學(xué)習(xí)指南:慣例模式與編程實踐》序


譯者序

2007年9月20日的下午瓮栗,在谷歌山景城總部的一間辦公室里库北,谷歌的頂級程序員 Rob Pike在等待一個 C++ 項目構(gòu)建的過程中與谷歌的另外兩個頂級程序員 Robert Griesemer和 Ken Thompson進(jìn)行了一次有關(guān)設(shè)計一門新編程語言的討論铣揉,他們一拍即合窜骄,從此誕生了Go這門新的編程語言娶牌。Go語言在2009年開源后奔浅,憑借開放活躍的社區(qū),以不可思議的速度成長诗良,并誕生了Docker汹桦、Kubernetes 等“里程碑級”項目,這些項目讓Go被譽為“云計算基礎(chǔ)設(shè)施新興語言”鉴裹,有人直接稱其為云計算語言舞骆。

時至今日钥弯,幾乎每一位程序開發(fā)者都會在每天的工作中直接使用著Go語言或者使用Go語言編寫的工具,從國內(nèi)一些招聘網(wǎng)站數(shù)量龐大的Go語言崗位需求中督禽,也不難發(fā)現(xiàn)Go語言的巨大潛力脆霎,以及掌握和精通這樣一門編程語言的必要性。作者Jon Bodner在書中并未采用教程式的行文狈惫,而是從編程實例出發(fā)睛蛛,引出Go語言的語法知識和編程實踐。整個過程深入淺出地講述了編程原理知識胧谈,通過大量的代碼示例展示了如何寫出符合Go語言慣例的代碼忆肾,并反復(fù)強調(diào)代碼清晰與簡單的重要性。其中還解釋了可能影響程序行為的底層概念菱肖,比如指針對內(nèi)存布局與垃圾回收的影響客冈。全書層層推進(jìn),娓娓道來蔑滓,讓讀者們知其然更知其所以然郊酒,這些精粹的知識能夠幫助我們更好的了解Go語言,做出科學(xué)與合理的架構(gòu)設(shè)計键袱,更高效的排查各種復(fù)雜的程序異常以及線上故障燎窘。

本書是學(xué)習(xí)Go語言不可多得的一本好書,其內(nèi)容之新蹄咖,甚至涵蓋目前未正式發(fā)布的泛型褐健。在亞馬遜網(wǎng)站上搜索“Golang”,會發(fā)現(xiàn)本書在五星好評中排名第一(Go語言的超級暢銷書Go Programming Language也只有四星半)澜汤。我從2019年開始接觸使用Go語言蚜迅,對這門語言尤為喜愛:它優(yōu)秀的語言設(shè)計,出色的并發(fā)特性俊抵,豐富強大的工具鏈谁不,活躍的社區(qū)等深深吸引著我。我們有幸站在巨人的肩膀上翻譯了本書徽诲,在翻譯過程中我們深深體驗到了Go語言的設(shè)計哲學(xué)和無窮魅力刹帕。我們?nèi)嗽诮肽甑姆g中傾注了很多心血,希望盡最大的努力將本書的所有精華都展現(xiàn)給讀者谎替,以幫助更多的朋友從中受益偷溺。盡管如此,仍難免有疏漏或者不盡如人意之處钱贯,敬請廣大讀者不吝斧正挫掏。

楊波,2021年12月于武漢秩命。

第一篇:開啟第二編程語言之旅

沈淦 有贊技術(shù)副總裁

Go語言解決了當(dāng)今軟件開發(fā)人員不得不面對的一個普遍問題:在快速開發(fā)和性能之間做出選擇尉共。C和C++這類語言提供了很快的代碼執(zhí)行速度褒傅,Java在開發(fā)效率和運行速度上做了平衡,而Ruby和Python這類語言則擅長快速開發(fā)袄友。Go語言則很好地兼顧開發(fā)效率和運行速度樊卓,不僅提供了高性能的運行時,也降低了大型項目的開發(fā)難度杠河。

Go語言發(fā)布至今已經(jīng)有十余年。今天浇辜,很多大型的互聯(lián)網(wǎng)系統(tǒng)都建立在Go語言的架構(gòu)上券敌。同時,更多的人像我這樣對Go語言略知一二柳洋,從未使用Go語言開發(fā)過正式項目但希望走進(jìn)Go語言的世界待诅。如果你已經(jīng)熟練掌握了一門編程語言(比如Java),這本書就是你快速上手Go語言的絕佳選擇熊镣。

這本書介紹的概念并不繁雜:第1章主要幫助初學(xué)者搭建一個良好的Go語言開發(fā)環(huán)境卑雁;第2~9章由淺入深地講述Go語言從簡單的演示代碼編寫到實際應(yīng)用開發(fā)所需要的基礎(chǔ)知識;第10~13章探索了Go語言在分布式服務(wù)器端開發(fā)中得天獨厚的優(yōu)勢绪囱;第14章和第15章指出了Go語言目前的限制和容易被誤用或濫用的特性测蹲,并展望了Go語言未來的發(fā)展趨勢。

本書的作者Jon Bodner是一名既精通Go語言又深諳互聯(lián)網(wǎng)開發(fā)精髓的行業(yè)老兵鬼吵,書中的內(nèi)容組織結(jié)構(gòu)特別精彩扣甲,有些知識點一筆帶過,有些知識點濃墨重彩(比如針對goroutine生命周期的章節(jié))齿椅。加上幾位譯者精準(zhǔn)的翻譯琉挖,本書將Go語言在分布式系統(tǒng)開發(fā)和工程實踐方面的優(yōu)勢表達(dá)得淋漓盡致。

特別感謝學(xué)凡向我推薦這本書涣脚,通過幾個星期的邊學(xué)邊練示辈,感覺自己也從一個Go語言門外漢變成了略通一二的Gopher(指Go語言的愛好者與從業(yè)者,同理遣蚀,Javaer矾麻、Pythonista指Java、Python的愛好者與從業(yè)者)妙同。期待更多在轉(zhuǎn)型路上的Javaer射富、Pythonista伙伴們閱讀本書,開啟自己的第二編程語言(或第N編程語言)之旅粥帚。

第二篇:Go胰耗,我的第N語言

于鑫蕾 凱捷咨詢資深架構(gòu)師

在計算機軟件領(lǐng)域奮斗多年,依然清晰記得求學(xué)時代老師的教導(dǎo):“計算機語言不只是一套與計算機交流的工具芒涡,也是一套實踐方法和模式的沉淀柴灯÷袈”

本書能幫助你快速掌握Go語言的關(guān)鍵字、類型赠群、語法羊始、函數(shù)、指針查描、錯誤處理突委、并發(fā)編程。你還會發(fā)現(xiàn)Go語言致力于編寫在較長的軟件生命周期中更易于維護的代碼冬三。例如匀油,Go編譯器對指向局部變量的指針進(jìn)行了優(yōu)化處理。倘若你熟悉C語言勾笆,相信對指針指向無效的內(nèi)存所造成的異常并不陌生敌蚜。

本書除了介紹Go語言的基本語法以外,還對比了Go與C語言窝爪,并講述了Go編譯器在平衡性能與提高代碼維護性方面所做的優(yōu)化弛车。Go有25個關(guān)鍵字,但是表達(dá)能力很強大蒲每,幾乎支持大多數(shù)你在其他語言見過的特性:繼承纷跛、重載、對象等邀杏。

在過去幾年的軟件研發(fā)實踐中忽舟,我所在的項目組使用了大量“云原生”以及“云基礎(chǔ)架構(gòu)代碼化”工具,比如著名的Terraform淮阐、Kubernetes等叮阅。單純使用Terraform只需要掌握模版語法即可,然而究其根本泣特,無論是Terraform還是Kubernetes浩姥,都是采用Go作為底層語言開發(fā)的,熟練掌握Go語言之后再回頭看這些“云原生”工具状您,你會有一種“恍然大悟“的感覺勒叠。 開發(fā)Kubernetes 自定義控制器時你將更加得心應(yīng)手。本書第10章的并發(fā)編程將帶你體會Go在語言層面支持并發(fā)的魅力膏孟。并發(fā)是Go的DNA眯分,這也是在這騰“云”駕“物”的時代Go語言如此活躍的原因。

學(xué)無止境柒桑,不論是剛接觸編程語言的新手弊决,還是將Go作為第N語言的全棧專家,通過閱讀本書,都能夠以全新的方式思考軟件飘诗,體會并學(xué)到最地道的Go語言實踐哲學(xué)与倡。

第三篇:人生苦短,只讀好書

吾真本? Thoughtworks首席咨詢師昆稿,《混沌工程:復(fù)雜系統(tǒng)韌性實現(xiàn)之道》譯者

讀書很花時間纺座。由于要運行書中的代碼,讀編程語言的書就更花時間溉潭。對于難以實現(xiàn)時間自由的程序員來說净响,只有選擇讀好書,才能讓睡眠的時間更多些喳瓣。

“人生苦短别惦,只讀好書”。

我一般用下面的方法來尋找編程語言方面的好書夫椭。以Go語言為例。先用英文搜索引擎搜索“books about golang”氯庆。然后從搜索結(jié)果中挑選一些近幾年出版的書蹭秋,之后再打開amazon.com網(wǎng)站,逐一查看這些書的評分星級和書評堤撵。如此就能選出好書仁讨。

讀國外讀者寫的書評,時常會有驚喜实昨。比如洞豁,從著名的藍(lán)皮書The Go Programming Language的書評中,我得知Go會構(gòu)建靜態(tài)綁定的可執(zhí)行文件荒给。這樣一來丈挟,就不會在運行時出現(xiàn)DLL或.so版本依賴不匹配的煩惱了。另外志电,一位讀者在Network Programming with Go一書的書評中提到曙咽,她在讀該書時會與藍(lán)皮書和Learn Go with Tests兩本書一起讀,以便將來讀更高階的Distributed Services with Go挑辆。根據(jù)她的提示例朱,喜愛編程演練的我不僅找到了符合我的Learn Go with Tests一書,還從中找到了通過實例學(xué)習(xí)Go語言的網(wǎng)站https://gobyexample.com鱼蝉。

下面是按照上述方法洒嗤,我找到的7本Go語言的好書。先按讀者評分星級魁亦,然后按書評數(shù)量渔隶,最后按出版日期排序。書評數(shù)量越多洁奈,說明讀者關(guān)注度越高派撕。

第7名:Network Programming with Go婉弹,作者Adam Woodbeck,2021年3月25日出版终吼,4.6星镀赌,19條書評。

第6名:Distributed Services with Go际跪,作者Travis Jeffery商佛,2021年4月6日出版,4.6星姆打,22條書評。

第5名:Cloud Native Go玛追,作者M(jìn)atthew A. Titmus痊剖,2021年5月11日出版陆馁,4.6星叮贩,22條書評益老。

第4名:Head First Go杨箭,作者Jay McGavren互婿,2019年5月7日出版慈参,4.6星驮配,106條書評壮锻。

第3名:Mastering Go第3版灰殴,作者M(jìn)ihalis Tsoukalos牺陶,2021年8月31日出版掰伸,4.7星狮鸭,9條書評。

第2名:藍(lán)皮書The Go Programming Language,作者Alan Donovan 與 Brian Kernighan麻削,4.7星呛哟,919條書評。

第1名:Learning Go(本書)逃呼,作者Jon Bodner苏揣,4.8星平匈,71條書評增炭。

我讀了本書英文版前9章隙姿。感覺行文流暢孟辑,講解實用炭玫。就像在聽一位開發(fā)經(jīng)驗豐富的高手在我面前娓娓傳授Go語言的武功秘籍吞加。作者不僅講清楚了“是什么”,還會告訴你“為什么”践图,以及“什么時候該這樣用码党,什么時候該那樣用”揖盘。

作為曾經(jīng)翻譯過幾本英文書的我,瀏覽本書的中文譯稿時箕慧,也同樣感覺十分流暢销钝。我深知譯者和編輯的辛苦座享,所以在此對他們的辛勤付出表示由衷感謝渣叛。

編程圈和圖書圈的流行趨勢就像時尚圈的流行趨勢一樣,日新月異箫攀。幾個月之后,上述好書列表必然會發(fā)生變化。但我希望上述方法對你有所幫助绝葡。也希望你我一起抓緊時間閱讀本書功咒,不要辜負(fù)了這本排名第一的好書航瞭。

第四篇:大道至簡

張喻??騰訊高級開發(fā)工程師,《遺留系統(tǒng)重建實戰(zhàn)》譯者

在如今互聯(lián)網(wǎng)紅利褪去的時代,“互聯(lián)網(wǎng)黑話”似乎是一根救命稻草亭饵,輕而易舉地把簡單的事情描述得復(fù)雜化,從而凸顯其氣勢磅礴碱妆。在編程領(lǐng)域,復(fù)雜的架構(gòu)固然讓人肅然起敬,但是擁有將復(fù)雜問題簡單化的藝術(shù)繁成,則顯得尤為耳目一新混移。

作為一名前些年一直專注于Java領(lǐng)域的開發(fā)者毁嗦,接觸到Go語言之后,竟也不免為它的一些特性而感到驚喜。它能非常快速的搭建一個應(yīng)用鸟召,靈活且輕便跟继,強大且高效舔糖。

它保持極端簡單的行為文化碌廓,直接根源于C的簡潔、高效剩盒,實現(xiàn)了編程哲學(xué)的重塑谷婆,同時滿足了互聯(lián)網(wǎng)時代的并行與分布式的需要以及大規(guī)模軟件工程的需求。比如最少特性原則辽聊,如果一個功能不對解決問題有顯著的價值纪挎,那么就不提供;比如極度簡化但完備的面向?qū)ο缶幊蹋∣OP)方法跟匆。它廢棄了大量的OOP特性异袄,如繼承、構(gòu)造/析構(gòu)函數(shù)玛臂、虛函數(shù)烤蜕、函數(shù)重載、默認(rèn)參數(shù)等迹冤;再比如并發(fā)編程時讽营,Go語言在語言級別就支持了協(xié)程并發(fā),通信方式是基于消息傳遞的泡徙,而不是大多數(shù)語言使用的基于共享內(nèi)存的通信方式橱鹏。對比Java的多線程,協(xié)程更輕量堪藐、使用更簡單莉兰,但卻能更直接、高效地解決問題礁竞。

可以看到糖荒,Go語言在業(yè)界越來越得到廣泛的認(rèn)可,有很多著名的開源項目都是使用Go語言編程模捂,比如Docker捶朵、Kubernetes。目前枫绅,國內(nèi)互聯(lián)網(wǎng)的很多新興項目也逐漸向Go語言轉(zhuǎn)型泉孩。

作為一本工具書硼端,本書適合有一定編程經(jīng)驗的開發(fā)人員閱讀并淋。不論此時此刻的你學(xué)習(xí)的是什么語言珍昨,我相信句喷,通過這本書去了解該語言的特性,你會發(fā)現(xiàn)語言背后所隱含的底層設(shè)計思維唾琼,以及大道至簡的哲學(xué)思考,才是彌足珍貴的澎剥。

第五篇:像地鼠(Gopher)一樣思考

周訓(xùn)杰 企業(yè)架構(gòu)師,《演進(jìn)式架構(gòu)》哑姚、《解決方案架構(gòu)師修煉之道》、《如何編寫好程序》譯者

說起語言叙量,無論是自然語言還是編程語言,都有許多相通之處绞佩。很多人在學(xué)習(xí)第二語言的時候會發(fā)現(xiàn)無論對語法和詞匯多么熟悉寺鸥,依然無法做到像母語者那樣“地道”的表達(dá)和“精準(zhǔn)”地闡述。這是因為他們忽視了歷史品山、文化胆建、生活方式對語言的塑造。學(xué)習(xí)編程語言也是一樣的肘交,如果忽略了該語言誕生的背景眼坏、設(shè)計初衷以及底層設(shè)計邏輯,我們就會寫出不符合范式的代碼酸些,更甚者是可能會不斷帶入已經(jīng)熟悉的編程語言的編程思路與范式宰译,使得程序無法發(fā)揮語言本身的優(yōu)勢,繼而引發(fā)錯誤魄懂。

幸而我們有了這本書沿侈,它在為讀者講述如何從Gopher的視角來編寫代碼。作者在介紹Go語言的特性市栗、語法以及內(nèi)置對象時缀拭,不僅涵蓋了基本內(nèi)容,而且從Go的底層設(shè)計邏輯來幫助讀者理解其特點填帽。在一些常見場景下作者還會將Go語言同其他流行的語言(如Java蛛淋、C++ )進(jìn)行比較,幫助讀者快速掌握Go語言的最佳實踐篡腌。

非常感謝三位譯者將本書譯為中文版褐荷,使得更多國內(nèi)的讀者能通過本書領(lǐng)略Go語言的魅力。我驚喜地發(fā)現(xiàn)三位譯者用中文精準(zhǔn)地還原了全書嘹悼,也根據(jù)自己的理解加入了很多極具價值的注釋叛甫,體現(xiàn)了他們對Go 語言的深入思考和深厚的程序設(shè)計功底层宫。

Go語言自誕生以來,隨著自身的不斷演進(jìn)其监,已經(jīng)成為了一門非常成熟并具有鮮明特點的編程語言萌腿,其開發(fā)者基數(shù)正在不斷擴大。隨著業(yè)內(nèi)使用Go語言編寫的明星產(chǎn)品不斷涌現(xiàn)抖苦,Go語言也獲得了國內(nèi)很多軟件大廠的青睞毁菱。如果你正好也希望嘗試Go語言,并系統(tǒng)地學(xué)習(xí)锌历,那么本書將會是你的最佳選擇鼎俘。

第六篇:工欲善其事,必先利其器

劉虎?卓爾信科研發(fā)中心CTO?

“工欲善其事辩涝,必先利其器”贸伐。在好友的推薦下,我迫不及待地讀完了全書怔揩,作者對于Go語言的描述完整且詳細(xì)捉邢,任何關(guān)于語言本身的問題都可以在書中找到答案。全書完全按照Go編程風(fēng)格編寫商膊,所有的例子和講解都遵循Go的思路和風(fēng)格,如果我們能夠靜下心來認(rèn)真學(xué)習(xí)晕拆,就能“一次到位”地掌握Go語言的精髓。本書無論對于初學(xué)者吝镣,還是對于已經(jīng)踏上Go語言編程之路的修行者末贾,都是經(jīng)典的教科書整吆,也是我們快速提升自身能力的最佳“利器”。

Go是一門致力于“化繁為簡”的編程語言拴测,本書耐心地引導(dǎo)讀者學(xué)習(xí)并采用Go語言的最佳特性集索。在Go的所有特性里,本人最喜歡垃圾回收、goroutine扰法、通道以及接口塞颁。Go是一套工具、實踐和模式酷窥,用Go編寫的軟件在其較長的生命周期中更容易進(jìn)行維護蓬推。我對這段話再多加一重理解:Go可以讓初學(xué)者很快寫出高并發(fā)澡腾、高負(fù)載能力生產(chǎn)級代碼。這樣的代碼特別適合成專長型或創(chuàng)業(yè)團隊毅糟,如果希望滿足對“奇妙”代碼的好奇心姆另,本書是最佳的開始坟乾。

今天的Go語言學(xué)習(xí)者無疑是非常幸運的,本書具備極高的知名度右核,我們得以有機會在大師打下的基礎(chǔ)上大步向前贺喝,不必再為某些語言的缺陷和過度的技巧而煩惱宗兼。Go是一個工程工具,工具本身能否發(fā)揮更大的價值在于使用工具的我們染苛。本書的幾位譯者都是Go領(lǐng)域的實踐者茶行,譯本完全再現(xiàn)了原書的魅力淑际,極大地開拓了我的視野,我向各位讀者隆重推薦這本書艾帐。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梅桩,一起剝皮案震驚了整個濱河市伯铣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌焚鲜,老刑警劉巖放前,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贝乎,死亡現(xiàn)場離奇詭異叽粹,居然都是意外死亡,警方通過查閱死者的電腦和手機锤灿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門但校,熙熙樓的掌柜王于貴愁眉苦臉地迎上來状囱,“玉大人倘是,你說我怎么就攤上這事∵墩常” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵答倡,是天一觀的道長瘪撇。 經(jīng)常有香客問我设江,道長攘轩,這世上最難降的妖魔是什么码俩? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任稿存,我火速辦了婚禮瓣履,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冕臭。我一直安慰自己燕锥,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布托慨。 她就那樣靜靜地躺著厚棵,像睡著了一般窟感。 火紅的嫁衣襯著肌膚如雪歉井。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天蜜自,我揣著相機與錄音卢佣,去河邊找鬼。 笑死戈鲁,一個胖子當(dāng)著我的面吹牛嘹叫,可吹牛的內(nèi)容都是我干的罩扇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼消约,長吁一口氣:“原來是場噩夢啊……” “哼或粮!你這毒婦竟也來了捞高?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤浓体,失蹤者是張志新(化名)和其女友劉穎命浴,沒想到半個月后生闲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體月幌,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡扯躺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年蝎困,在試婚紗的時候發(fā)現(xiàn)自己被綠了禾乘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虽缕。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡氮趋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出剩胁,到底是詐尸還是另有隱情摧冀,我是刑警寧澤系宫,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站椒惨,受9級特大地震影響潮罪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沃暗,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一何恶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惜辑,春花似錦盛撑、人聲如沸捧搞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碗短。三九已至,卻和暖如春总滩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闰渔。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工冈涧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留督弓,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓愚隧,卻偏偏與公主長得像狂塘,于是被迫代替她去往敵國和親鳄厌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容