-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Go專家編程

( 簡體 字)
作者:任洪彩類別:1. -> 程式設計 -> Go語言
譯者:
出版社:電子工業出版社Go專家編程 3dWoo書號: 53103
詢問書籍請說出此書號!

缺書
NT售價: 540

出版日:7/1/2020
頁數:404
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121365577
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:



Go語言是一門相對比較年輕的語言,不僅得益于其優秀的設計,同時借鑒了現有多種成熟語言的豐富經驗,使得Go語言成為歷史上發展最為迅速的編程語言之一。尤其在云原生領域,由Docker、Kubernetes為代表的大批開源明星項目大幅推動了Go語言的發展,乃至當前CNCF(Cloud Native Computing Foundation,云原生計算基金會)旗下的絕大部分開源項目都是以Go語言為主要編程語言。如同近十年AI尤其是深度學習神經網絡的高速發展將Python語言推進至“人工智能領域的首選編程語言”一樣,我們可以毫不夸張地說,Go語言已經成為“云原生領域的首選編程語言”。
華為公司也是Go語言的早期實踐者之一。早在2012年Go語言1.0版本發布之初,公司編程語言工程能力組就已經對Go 1.0進行了詳細的分析,并對Go的設計理念、優缺點進行了總結,給出了推薦在分布式系統尤其是云計算相關業務中進行使用的建議意見。隨后,華為云研發團隊在容器、PaaS(Platform as a Service)、中間件等部分業務中使用Go語言進行了原型和產品開發,同時構建了公司Go語言相關的工具鏈和安全編程規范等指導說明,并使用了Go語言相關的多個開源項目比如Beego、InfluxDB、NATS、ETCD,等等。尤其2013年之后,隨著華為云原生開源團隊大力投入Docker、Kubernetes、Prometheus、Istio等開源生態項目,并且基于相關項目陸續推出了多個云原生領域的華為云服務產品,Go語言在華為云業務中的地位越來越重要。2018年,Go語言正式成為華為公司官方指定的五種主流編程語言之一(其他包括C、C++、Java、Python),進入華為公司員工技能培訓與認證體系,并成為華為云服務開發的推薦語言之一。
Go語言以語法特性精煉、開發效率高著稱,并且非常重視工程化能力和規范性,比如嚴苛的語法格式、內置測試能力等。但是,作為一門系統級編程語言,并且內置了自動垃圾回收、協程、通道、接口、元編程等高級能力的語言,各種語言陷阱與高級使用問題仍是Go語言開發者不可忽視的內容。尤其對于使用Go語言構建基礎設施平臺、基礎云服務、高性能中間件、高負載服務端等關鍵業務的開發者,更加需要重視Go語言的高級編程知識。從Go語言的多種常用數據結構如切片、結構體、字符串、映射表、管道等的使用上,到迭代器、循環、接口、協程、并發鎖、異常處理等常見邏輯處理上,以及性能調優、測試、包管理、編譯等工程步驟上,都會涉及各種可能會導致編碼漏洞并進而引發業務風險的問題。本書匯總了大量華為一線工程師在使用Go語言進行關鍵業務開發過程中的實戰經驗總結,并以各種案例剖析和原理詳解的方式為讀者展現,以期對Go語言開發人員在深入學習與使用Go語言時提供一定的幫助。
作為一門開源、開放的編程語言,Go仍在快速的發展中,未來陸續會有更多的高級特性、更豐富的工具,以及更好的性能實現、更安全的編譯與運行時。“工欲善其事,必先利其器”,相信《Go專家編程》能夠幫助讀者更加深入地掌握Go語言的各類高級特性,并在實際開發工作中避開各類陷阱,開發出高質量的代碼,實現業務可信、安全。

張宇昕
華為云CTO


前言




Go語言是由Google公司開源的一門編程語言,雖然正式歷史只有短短10年不到(2012年發布1.0版本),但在多個領域尤其是云計算領域得到了快速及廣泛的應用。相對于C這種底層系統語言,Go語言增加了自動垃圾回收、協程、接口等現代語言中常見的高級特性,而相對于Java、Python等應用開發語言,Go語言移除或弱化了泛型、類、元編程、Lambda表達式等高級特性。Go語言因此兼備了系統級語言所需要的“輕快靈”,以及應用級語言所需要的“低門檻、高生產力”。Go語言非常適合用于云服務開發、應用服務端開發,以及在通用Linux上的部分嵌入式系統開發。
Go語言的快速發展也離不開開源社區的支持。Go語言自開源起就引發了大量開發者的關注,并且基于Go語言誕生了大批知名的開源項目,其中最引人矚目的無疑是Kubernetes、Docker,以及托管在CNCF(云原生計算基金會)旗下的大批云原生開源項目。Go語言也因此被稱為“云基礎設施語言”,Google公司的Go產品負責人更是稱Go語言為“云的語言”。
在筆者所在的華為公司,Go語言被作為公司級的五種指定編程語言之一(其他四種為C、C++、Java、Python),并且在華為云云原生產品研發部門作為首選編程語言。華為云目前有多達30款以上的云服務產品以Go語言為主力編程語言,并且基于Go語言制定了公司級的編程規范,以及生產級高可靠、高安全、高性能的可信編程要求。本書內容也源自筆者團隊在Kubernetes、Docker等云原生開源社區,以及華為云多款云原生服務產品中的實際生產級經驗總結。
本書寫作目的
本書作為華為云原生技術叢書的一員,面向Go語言程序員及感興趣的技術人員,普及與推廣Go語言。
很多公司推崇“一次性把事情做對”的文化,對于編程而言,一次性寫出高質量的代碼就是對該文化最好的詮釋。寫出高質量的代碼,對程序員有兩點基本要求:
精通編程語言的內部實現機制;
豐富的實踐經驗,不斷總結。
Go語言是一門非常容易上手的語言,即便是新手,通過官方文檔都可以很快地熟悉其語法并運用到項目中。面對項目需求,我們不僅需要將其快速地實現出來,而且還要保證它總是能按照我們的預期運行,這就需要對編程語言有比較深入的認識。考慮到寫出沒有缺陷的程序是我們始終追求但永遠無法實現的奢望,我們所能做的只是盡可能地減少缺陷及從缺陷中不斷學習。
本書希望把筆者對Go語言的理解,以及來自云原生開源社區和公司內部的經驗與廣大的Go語言從業者分享,希望能幫助讀者提升自身對Go語言的認識、寫出高質量的代碼。
本書特點
這是一本定位于Go語言進階的書籍,主要講解Go語言特性的實現機制,但為了照顧新手程序員,也為了循序漸進、由淺入深地展開介紹,在介紹特性前也會從基礎用法講起,所以不管是初級程序員,還是有一定編程經驗的程序員,都可以是本書的讀者。
了解Go語言特性最直接的做法是閱讀其實現源碼,但Go語言源碼晦澀難懂,容易讓人望而生畏。所以,如何從浩如煙海的源碼中提煉出實現原理并以讀者容易理解的方式描述出來就是本書的重點。
在講解Go語言實現原理時,本書盡可能地使用源碼中的數據結構,并配以適量的圖文來幫助理解。除了對Go語言特性的介紹,本書還包括一些精心設計的測試題目,用于幫助讀者檢驗自己的能力水平。此外,本書還收錄了一些發生在真實項目中的陷阱案例,這些案例大都源自商業項目或開源項目,值得參考。
本書結構
本書內容涵蓋常見的數據結構、控制結構、基礎概念、標準庫、工程工具及案例分享。
第1章和第2章主要介紹常見的數據結構,如管道、切片、map等,以及常見的控制結構,如select和range。建議讀者在閱讀這兩章時先認真做一做每個章節的“熱身題目”,以便于檢測自已對相關知識點的掌握程度。
第3章和第4章主要介紹Go語言關鍵的概念,即協程和垃圾回收。協程機制涉及操作系統的設計,而垃圾回收涉及內存管理,都是比較復雜的知識,這兩章主要介紹一些基礎的概念,可作為讀者進一步深入研究的引子。
第5章至第10章主要介紹常用Go語言標準庫的實現原理,比如互斥鎖、讀寫鎖、context、reflect、testing、timer等。這些章節沒有先后順序之分,讀者可以根據自身需求選擇閱讀。
第11章和第12章包含了Go語言工具鏈的內容,包括如何管理多個Go版本及Go Module。Go Module是Go官方提供的依賴包管理工具,其他第三方依賴包管理工具逐漸被Go Module所替代,這部分內容不僅包含如何使用Go Module,還對Go Module的實現機制做了探討。
第13章記錄了來自開源社區和實際生產級項目的部分“踩坑”案例,出于信息安全、方便敘述的考慮,筆者對這些案例做了一定程度的精簡,實際項目中這些問題會非常隱蔽。雖然這些知識點在前面的章節中均有介紹,但本章還是值得閱讀,因為寫出高質量代碼不僅需要對語言本身有深刻的理解,也需要不斷吸取前人的經驗。
本書援引的Go語言源碼,如無特別注明,則主要源自Go 1.11,同時本書也覆蓋了Go 1.12至1.14版本新增的主要特性。
表達約定
本書的討論內容可能在不同的上下文語境下對相同的事物出現不同的表述方式,比如:
管道:有時會使用更貼近源碼實現的channel甚至chan名稱。
切片:有時會使用更貼近源碼實現的slice名稱。
上下文:有時會使用Context表示上下文接口或用于章節標題中,有時也直接使用context。
復制:往往會使用拷貝或克隆等業內相對通用的詞語表示。
源代碼與官方參考
本書示例代碼位于https://github.com/cloudnativebooks/cloud-native-go,讀者可以從此獲取示例源碼及運行源碼的相關說明。
本書涉及的參考書目、博客文章等內容可以從www.broadview.com.cn/36557中的下載資源處獲取。
勘誤和支持
若您在閱讀本書的過程中有任何問題或者建議,可以通過本書源碼倉庫提交Issue或者PR,也可以關注容器魔方微信公眾號并加入微信群與作者交流。我們十分感謝并重視您的反饋,會對您提出的問題、建議進行梳理與反饋,并在本書后續版本中及時做出勘誤與更新。
致謝
在本書的寫作及成書過程中,本書作者團隊得到了公司內外許多領導、同事、朋友及家人的鼓勵和幫助。
感謝華為云鄭葉來、張宇昕、高江海、李幫清、方璞等業務主管對華為云原生技術叢書及本書寫作的大力支持。
感謝華為云可信軟件能力團隊的李新峰、彭瑞林、黃凌云,以及華為云容器團隊王澤鋒、毛杰、張琦、黃毽等對本書的審閱和建議。
感謝電子工業出版社博文視點陳曉猛編輯,陳編輯一絲不茍地制定出版計劃及組織工作,本書才得以順利出版。
感謝每一位Go語言布道者,他們的各種分享、博客文章及書籍都在積極推動著Go語言的發展,也為本書編寫提供了靈感和參考;

任洪彩
華為云原生開源團隊核心成員

劉赫偉 博士
華為云原生技術叢書 總編
華為云容器服務域 技術總監
內容簡介:

本書基于Go語言源碼提煉出Go特性的實現原理,并配以大量圖表和實例以通俗易懂的語言描述出來,包括常見數據結構實現原理(包括chan、slice、map、struct等),常見控制結構實現原理(包括defer、select、range、mutex等),Go協程、內存管理、反射等機制,Go 工具鏈指導及原理(包括單元測試、性能測試、依賴管理等)。另外,本書還包括由實際項目Bug復盤而來的案例分享,包括定時器資源泄露、語法糖陷阱等。本書還包含大量練習題目,甚至可以作為面試題目來源。
目錄:

第1章 常見數據結構的實現原理
1.1 管道
1.1.1 熱身測驗
1.1.2 特性速覽
1.1.3 實現原理
1.2 slice
1.2.1 熱身測驗
1.2.2 特性速覽
1.2.3 實現原理
1.2.4 切片表達式
1.3 map
1.3.1 熱身測驗
1.3.2 特性速覽
1.3.3 實現原理
1.4 struct
1.4.1 熱身測驗
1.4.2 內嵌字段
1.4.3 方法受體
1.4.4 字段標簽
1.5 iota
1.5.1 熱身測驗
1.5.2 特性速覽
1.5.3 實現原理
1.6 string
1.6.1 熱身測驗
1.6.2 特性速覽
1.6.3 實現原理
第2章 控制結構
2.1 select
2.1.1 熱身測驗
2.1.2 特性速覽
2.1.3 實現原理
2.2 for-range
2.2.1 熱身測驗
2.2.2 特性速覽
2.2.3 實現原理
第3章 協程
3.1 協程的概念
3.2 調度模型
3.3 調度策略
第4章 內存管理
4.1 內存分配
4.2 垃圾回收
4.3 逃逸分析
第5章 并發控制
5.1 channel
5.2 WaitGroup
5.3 context
5.4 Mutex
5.5 RWMutex
5.5.1 讀寫鎖的數據結構
5.5.2 場景分析
第6章 反射
6.1 熱身測驗
6.2 接口
6.3 反射定律
第7章 測試
7.1 快速開始
7.1.1 單元測試
7.1.2 基準測試
7.1.3 示例測試
7.2 進階測試
7.2.1 子測試
7.2.2 Main測試
7.3 實現原理
7.3.1 testing.common
7.3.2 testing.TB接口
7.3.3 單元測試的實現原理
7.3.4 性能測試的實現原理
7.3.5 示例測試的實現原理
7.3.6 Main測試的實現原理
7.3.7 go test的工作機制
7.4 擴展閱讀
7.4.1 測試參數
7.4.2 benchstat
第8章 異常處理
8.1 error
8.1.1 熱身測驗
8.1.2 基礎error
8.1.3 鏈式error
8.1.4 工程遷移
8.2 defer
8.2.1 熱身測驗
8.2.2 約法三章
8.2.3 實現原理
8.2.4 性能優化
8.3 panic
8.3.1 熱身測驗
8.3.2 工作機制
8.3.3 源碼剖析
8.4 recover
8.4.1 熱身測驗
8.4.2 工作機制
8.4.3 源碼剖析
第9章 定時器
9.1 一次性定時器(Timer)
9.1.1 快速開始
9.1.2 實現原理
9.2 周期性定時器(Ticker)
9.2.1 快速開始
9.2.2 實現原理
9.3 runtimeTimer
9.3.1 實現原理
9.3.2 性能優化
9.4 案例分享
第10章 語法糖
10.1 簡短變量聲明符
10.1.1 熱身測驗
10.1.2 規則
10.2 可變參函數
第11章 版本管理
11.1 安裝Go
11.2 刪除Go
11.3 升級Go
11.4 Go版本管理器
11.4.1 快速開始
11.4.2 工作機制
11.4.3 小結
11.5 源碼編譯
11.5.1 源碼下載
11.5.2 源碼編譯過程
第12章 Go語言依賴管理
12.1 GOPATH
12.1.1 GOROOT是什么
12.1.2 GOPATH是什么
12.1.3 依賴查找
12.1.4 GOPATH的缺點
12.2 vendor
12.2.1 vendor目錄位置
12.2.2 搜索順序
12.2.3 vendor的不足
12.3 Go Module
12.3.1 Go Module基礎
12.3.2 快速實踐
12.3.3 replace指令
12.3.4 exclude指令
12.3.5 indirect指令
12.3.6 版本選擇機制
12.3.7 incompatible
12.3.8 偽版本
12.3.9 依賴包存儲
12.3.10 go.sum
12.3.11 模塊代理
12.3.12 GOSUMDB的工作機制
12.3.13 GOSUMDB的實現原理
12.3.14 第三方代理
12.3.15 私有模塊
12.3.16 Go Module的演進
第13章 編程陷阱
13.1 切片擴容
13.2 空切片
13.3 append的本質
13.4 循環變量引用
13.5 協程引用循環變量
13.6 recover失效
序: