PDF
本書有DRM加密保護,需使用HyRead閱讀軟體開啟
  • 精通Go程式設計
  • 點閱:338
  • 譯自:The Go programming language
  • 作者: Alan A.A. Donovan, Brian W. Kernighan著 , 楊尊一譯
  • 出版社:碁峰資訊
  • 出版年:2016[民105]
  • ISBN:978-986-476-233-0 ; 986-476-233-8
  • 格式:PDF
  • 版次:初版
  • 附註:原紙本書ISBN:978-986-476-133-3 含索引

內容簡介
 
本書是學習Go語言的權威資源,它展現如何撰寫清楚且正確的Go程式以解決實務上的問題。閱讀此書無需Go或其他特定語言的經驗,JavaScript、Ruby、Python、Java或C++等程式設計師都能夠輕鬆上手。
 
*第一章討論Go的基本概念,介紹檔案輸出入、文字處理、簡單圖形、與網路用戶端以及伺服器等。

 
*前幾個章節涵蓋了Go程式的結構元素:語法、流程控制、資料型別、與組織程式套件、檔案及函式。書中範例展示標準函式庫的套件並示範如何自行建構套件。其後的章節則深入解釋套件機制、如何使用Go工具建構、測試與維護專案。
 
*方法與介面相關章節介紹Go獨特的物件導向程式設計方式,其方法可以在間接滿足條件的型別與介面上宣告。這些章節以實際的範例解釋了封裝、組合與可替換性的重要原則。
 
*兩個與並行性有關的篇章深入此越顯重要的主題。首先是goroutine與channel基本機制的討論,描述Go最為人稱道的交談循序程式。其次是使用共用變數的傳統並行性。這些章節為首次遭遇並行性的程式設計師提供堅實的基礎。
 
*最後兩章探索Go的低階功能,一個是使用reflection的元編程藝術,另一個是如何使用unsafe套件在特殊情況下跳脫型別系統以及使用cgo工具建構Go的C函式庫連結。
 
書中數百個有趣與實用的Go範例程式涵蓋整個語言最重要的套件與各種應用。每一章都有練習題以測試你的理解並探索擴充與替代方案。原始碼可從gopl.io/下載並能使用go get命令取得、建構、與安裝。


作者簡介
 
Alan A. A. Donovan
 
Alan A. A. Donovan是Google位於紐約的Go團隊成員,擁有Cambridge與MIT的電腦科學學位,從1996年開始於業界從事程式設計工作。自2005年起任職於Google進行基礎架構專案,且是Blaze系統的設計者之一。他為Go語言建構了許多函式庫與靜態分析工具,包括oracle、godoc -analysis、eg與gorename等。

 
Brian W. Kernighan
 
Brian W. Kernighan是Princeton University的Computer Science Department的教授,從1969至2000年間任職於Bell Labs的Computing Science Research Center,從事Unix上的語言與工具開發。他是The C Programming Language第二版(Prentice Hall,1988)、The Practice of Programming(Addison-Wesley,1999)等書的作者之一。


  • 前言(第v頁)
    • Go 起源(第vi頁)
    • Go 專案(第vii頁)
    • 本書編排(第viii頁)
    • 更多資訊來源(第x頁)
    • 感謝(第xi頁)
  • 1. 基本入門(第1頁)
    • 1.1 Hello, World(第1頁)
    • 1.2 命令列參數(第4頁)
    • 1.3 找出重複行(第8頁)
    • 1.4 動態 GIF(第13頁)
    • 1.5 抓 URL 內容(第15頁)
    • 1.6 並行抓取 URL 內容(第17頁)
    • 1.7 網頁伺服器(第18頁)
    • 1.8 補充說明(第23頁)
  • 2. 程式結構(第27頁)
    • 2.1 名稱(第27頁)
    • 2.2 宣告(第28頁)
    • 2.3 變數(第30頁)
    • 2.4 指派(第36頁)
    • 2.5 型別宣告(第39頁)
    • 2.6 套件與檔案(第41頁)
    • 2.7 範圍(第46頁)
  • 3. 基本資料型別(第51頁)
    • 3.1 整數(第51頁)
    • 3.2 浮點數(第56頁)
    • 3.3 複數(第60頁)
    • 3.4 布林(第63頁)
    • 3.5 字串(第64頁)
    • 3.6 常數(第75頁)
  • 4. 組合型別(第81頁)
    • 4.1 陣列(第81頁)
    • 4.2 slice(第84頁)
    • 4.3 map(第93頁)
    • 4.4 struct(第100頁)
    • 4.5 JSON(第107頁)
    • 4.6 文字與 HTML 樣板(第113頁)
  • 5. 函式(第119頁)
    • 5.1 函式宣告(第119頁)
    • 5.2 遞迴(第121頁)
    • 5.3 多回傳值(第124頁)
    • 5.4 錯誤(第127頁)
    • 5.5 函式值(第132頁)
    • 5.6 不具名函式(第135頁)
    • 5.7 可變函式(第141頁)
    • 5.8 延遲函式呼叫(第143頁)
    • 5.9 panic(第148頁)
    • 5.10 recover(第151頁)
  • 6. 方法(第155頁)
    • 6.1 方法宣告(第155頁)
    • 6.2 指標接受器方法(第158頁)
    • 6.3 嵌入 struct 的組合型別(第161頁)
    • 6.4 方法值與運算式(第164頁)
    • 6.5 範例:位元向量型別(第165頁)
    • 6.6 封裝(第168頁)
  • 7. 介面(第171頁)
    • 7.1 以介面為合約(第171頁)
    • 7.2 介面型別(第174頁)
    • 7.3 介面條件(第175頁)
    • 7.4 解析 flag.Value(第178頁)
    • 7.5 介面值(第181頁)
    • 7.6 以 sort.Interface 排序(第186頁)
    • 7.7 http.Handler 介面(第191頁)
    • 7.8 error 介面(第195頁)
    • 7.9 範例:運算式求值(第197頁)
    • 7.10 型別判別(第205頁)
    • 7.11 以型別判別鑑別錯誤(第206頁)
    • 7.12 以型別判別查詢行為(第208頁)
    • 7.13 型別交換(第210頁)
    • 7.14 範例:依 token 進行的 XML 解碼(第212頁)
    • 7.15 一些建議(第215頁)
  • 8. Goroutine 與 Channel(第217頁)
    • 8.1 goroutine(第217頁)
    • 8.2 範例:並行性時鐘伺服器(第219頁)
    • 8.3 範例:並行性 echo 伺服器(第222頁)
    • 8.4 channel(第225頁)
    • 8.5 平行迴圈(第234頁)
    • 8.6 範例:並行 crawler(第239頁)
    • 8.7 以 select 多路複用(第244頁)
    • 8.8 範例:並行字典遍歷(第247頁)
    • 8.9 取消(第251頁)
    • 8.10 範例:聊天伺服器(第253頁)
  • 9. 共用變數並行性(第257頁)
    • 9.1 競爭條件(第257頁)
    • 9.2 互斥鎖:sync.Mutex(第262頁)
    • 9.3 讀/寫互斥鎖:sync.RWMutex(第266頁)
    • 9.4 記憶體同步化(第267頁)
    • 9.5 懶初始化:sync.Once(第268頁)
    • 9.6 競爭檢測器(第271頁)
    • 9.7 範例:並行非阻斷快取(第271頁)
    • 9.8 goroutine 與執行緒(第279頁)
  • 10. 套件與工具(第283頁)
    • 10.1 介紹(第283頁)
    • 10.2 匯入路徑(第284頁)
    • 10.3 套件宣告(第284頁)
    • 10.4 匯入宣告(第285頁)
    • 10.5 空匯入(第286頁)
    • 10.6 套件與命名(第288頁)
    • 10.7 Go 工具(第290頁)
  • 11. 測試(第301頁)
    • 11.1 go test 工具(第302頁)
    • 11.2 測試函式(第302頁)
    • 11.3 涵蓋率(第318頁)
    • 11.4 基準測試函式(第321頁)
    • 11.5 效能分析(第323頁)
    • 11.6 範例函式(第326頁)
  • 12. 反射(第329頁)
    • 12.1 為何使用反射?(第329頁)
    • 12.2 reflect.Type 與 reflect.Value(第330頁)
    • 12.3 輸出值的 Display 函式(第333頁)
    • 12.4 範例:S 表達式編碼(第338頁)
    • 12.5 以 reflect.Value 設置變數(第341頁)
    • 12.6 範例:S 表達式解碼(第344頁)
    • 12.7 存取 struct 欄位標籤(第348頁)
    • 12.8 顯示型別方法(第351頁)
    • 12.9 注意事項(第352頁)
  • 13. 低階程式設計(第353頁)
    • 13.1 unsafe.Sizeof、Alignof 與 Offsetof(第354頁)
    • 13.2 unsafe.Pointer(第356頁)
    • 13.3 範例:深等式(第358頁)
    • 13.4 以 cgo 呼叫 C 程式(第361頁)
    • 13.5 其他注意事項(第366頁)
  • 索引(第367頁)
紙本書 NT$ 580
單本電子書
NT$ 406

還沒安裝 HyRead 3 嗎?馬上免費安裝~
QR Code