幫助中心 | 我的帳號 | 關於我們

Go語言編程指南

  • 作者:(美)馬克·貝茨//科瑞·拉諾|責編:楊?國|譯者:白明//劉瑞強//于昊//郭宇
  • 出版社:人民郵電
  • ISBN:9787115636218
  • 出版日期:2024/06/01
  • 裝幀:平裝
  • 頁數:443
人民幣:RMB 119.8 元      售價:
放入購物車
加入收藏夾

內容大鋼
    本書涵蓋了Go語言的基礎語法、核心概念、慣用法和高級特性,並提供了豐富的代碼示例,旨在幫助開發人員快速上手Go語言編程。
    本書首先介紹了Go語言如何管理包、模塊和依賴,幫助讀者建立良好的項目結構。接著介紹了字元串、變數和常量等基礎知識。隨後詳細介紹了Go語言中的複合類型,如數組、切片、map、控制結構、函數、結構體、方法和指針等的正確使用方法。之後傳授了編寫高質量測試代碼的方法,並介紹了Go語言的介面和新的泛型功能及其使用方法。併發編程是Go語言的重要特性,本書最後專門介紹了如何利用併發提升代碼性能,並詳細講解了通道、Context及其他高級同步原語的使用方法。
    本書根據作者的Gopher Guides培訓課程編寫,適合Go語言初學者和具備其他編程語言知識的開發人員學習和參考,也可作為高等院校相關專業的教學參考書。

作者介紹
(美)馬克·貝茨//科瑞·拉諾|責編:楊?國|譯者:白明//劉瑞強//于昊//郭宇

目錄
第1章 模塊、包和依賴
  1.1 模塊
    1.1.1 工具鏈
    1.1.2 初始化一個模塊
    1.1.3 版本控制系統與模塊
  1.2 包
    1.2.1 什麼是包
    1.2.2 包命名
  1.3 文件夾、文件與代碼組織
    1.3.1 同一文件夾下的多個包
    1.3.2 文件命名
    1.3.3 包組織
  1.4 導入包和模塊
    1.4.1 導入路徑
    1.4.2 使用import關鍵字
    1.4.3 解決導入包的名字衝突問題
  1.5 依賴
    1.5.1 使用依賴
    1.5.2 使用go get添加依賴
    1.5.3 go.sum文件
    1.5.4 更新依賴
    1.5.5 語義版本
    1.5.6 多版本
    1.5.7 循環導入
  1.6 本章小結
第2章 Go語言基礎
  2.1 Go語言概述
    2.1.1 靜態類型
    2.1.2 垃圾回收
    2.1.3 編譯
    2.1.4 關鍵字、運算符和分隔符
  2.2 數值
    2.2.1 選擇正確的數值類型
    2.2.2 溢出和繞回
    2.2.3 飽和
  2.3 字元串
    2.3.1 解釋型字元串字面值
    2.3.2 原始字元串字面值
  2.4 UTF-
    2.4.1 rune
    2.4.2 遍歷UTF-8字元串
  2.5 變數
    2.5.1 變數聲明
    2.5.2 變數賦值
    2.5.3 零值
    2.5.4 nil
    2.5.5 零值速查表
    2.5.6 變數聲明與初始化
    2.5.7 多變數賦值
    2.5.8 未使用的變數

  2.6 常量
    2.6.1 帶類型的常量
    2.6.2 無類型常量(推斷類型)
    2.6.3 類型推斷
  2.7 標識符命名
    2.7.1 命名風格
    2.7.2 與包名衝突
    2.7.3 通過首字母大寫實現標識符導出
  2.8 列印與格式化
    2.8.1 格式化函數
    2.8.2 換行
    2.8.3 使用Println列印多個參數
    2.8.4 使用格式化函數
    2.8.5 轉義序列
    2.8.6 格式化字元串
    2.8.7 格式化整型
    2.8.8 格式化浮點型
    2.8.9 列印值的類型
    2.8.10 列印值
    2.8.11 列印值的更多細節
    2.8.12 以Go語法格式列印值
    2.8.13 錯誤使用格式化控制符
    2.8.14 顯式的實參索引
    2.8.15 字元串與數值的相互轉換
  2.9 本章小結
第3章 數組、切片和迭代
  3.1 列表類型:數組與切片
    3.1.1 數組與切片的差異
    3.1.2 識別差異
    3.1.3 初始化數組與切片
    3.1.4 數組與切片的零值
    3.1.5 數組與切片的索引
    3.1.6 數組與切片類型
    3.1.7 數組與切片類型的定義
    3.1.8 設置數組與切片變數的值
    3.1.9 向切片追加元素
    3.1.10 向切片追加一個切片
  3.2 切片的工作原理
    3.2.1 長度與容量
    3.2.2 切片的擴容
    3.2.3 使用make函數創建切片
    3.2.4 使用帶長度和容量參數的make函數
    3.2.5 make與append函數
    3.2.6 切片擴容時發生了什麼
    3.2.7 子切片
    3.2.8 修改子切片
    3.2.9 複製切片
    3.2.10 將數組轉換為切片
  3.3 迭代
    3.3.1 for循環

    3.3.2 迭代數組與切片
    3.3.3 range關鍵字
    3.3.4 控制循環
    3.3.5 do-while循環
  3.4 本章小結
第4章 map和控制結構
  4.1 map
    4.1.1 長度和容量
    4.1.2 初始化map
    4.1.3 未初始化的map
    4.1.4 map的鍵
    4.1.5 以結構體作為鍵
    4.1.6 迭代map
    4.1.7 刪除map中的鍵
    4.1.8 不存在的map鍵
    4.1.9 檢查map中的鍵是否存在
    4.1.10 利用零值
    4.1.11 僅測試鍵的存在性
    4.1.12 map和複雜值
    4.1.13 插入時複製
    4.1.14 列出map中的鍵
  4.2 if語句
    4.2.1 else語句
    4.2.2 else if語句
    4.2.3 賦值作用域
    4.2.4 邏輯和數學運算符
  4.3 switch語句
    4.3.1 default
    4.3.2 fallthrough
  4.4 本章小結
第5章 函數
  5.1 函數定義
    5.1.1 參數
    5.1.2 相同類型的參數
    5.1.3 返回值
    5.1.4 多返回值
    5.1.5 具名返回值
    5.1.6 作為一等公民的函數
    5.1.7 閉包
    5.1.8 匿名函數
    5.1.9 接受其他函數的返回值作為參數
  5.2 可變參數
    5.2.1 可變參數的位置
    5.2.2 擴展切片
    5.2.3 何時使用可變參數
  5.3 延遲函數調用
    5.3.1 多個返迴路徑下的延遲執行
    5.3.2 延遲函數調用的執行順序
    5.3.3 延遲函數調用與panic
    5.3.4 defer與Exit/Fatal

    5.3.5 defer與匿名函數
    5.3.6 defer與作用域
  5.4 init函數
    5.4.1 多個init函數
    5.4.2 init函數的執行順序
    5.4.3 利用init函數的導入副作用
  5.5 本章小結
第6章 結構體、方法和指針
  6.1 結構體
    6.1.1 在Go語言中聲明新類型
    6.1.2 定義結構體
    6.1.3 初始化結構體
    6.1.4 不帶欄位名的初始化
    6.1.5 訪問結構體欄位
    6.1.6 結構體標籤
    6.1.7 編碼用的結構體標籤
    6.1.8 使用結構體標籤
  6.2 方法
    6.2.1 方法與函數的不同
    6.2.2 方法表達式
    6.2.3 第三方類型的方法
    6.2.4 函數作為類型
    6.2.5 函數的方法
    6.2.6 沒有繼承
  6.3 指針
    6.3.1 值傳遞
    6.3.2 接收指針
    6.3.3 獲取指針
    6.3.4 傳遞指針
    6.3.5 使用指針
    6.3.6 值接收者與指針接收者
    6.3.7 new函數
    6.3.8 性能
    6.3.9 nil接收者
    6.3.10 nil接收者檢查
  6.4 本章小結
第7章 測試
  7.1 測試基礎
    7.1.1 命名
    7.1.2 testing.T類型
    7.1.3 標記測試失敗
    7.1.4 使用t.Error
    7.1.5 使用T.Fatal(推薦)
    7.1.6 精心編寫測試失敗的信息
  7.2 代碼覆蓋率
    7.2.1 代碼覆蓋率基礎
    7.2.2 生成覆蓋率報告
    7.2.3 go tool cover命令
    7.2.4 生成HTML覆蓋率報告
    7.2.5 編輯器支持

  7.3 表驅動測試
    7.3.1 表驅動測試剖析
    7.3.2 編寫表驅動測試
    7.3.3 子測試
    7.3.4 子測試剖析
    7.3.5 編寫子測試
  7.4 運行測試
    7.4.1 運行指定包的測試
    7.4.2 運行當前包及子包中的測試
    7.4.3 輸出測試詳細信息
    7.4.4 在測試中輸出日誌
    7.4.5 短測試
    7.4.6 並行運行包測試
    7.4.7 並行運行測試
    7.4.8 運行特定的測試
    7.4.9 設置測試超時時間
    7.4.10 快速失敗
    7.4.11 禁用測試緩存
  7.5 測試輔助函數
    7.5.1 定義測試輔助函數
    7.5.2 將函數標記為測試輔助函數
    7.5.3 清理測試輔助函數的資源
  7.6 本章小結
第8章 介面
  8.1 具體類型VS.介面
  8.2 顯式介面實現
  8.3 隱式介面實現
  8.4 使用介面之前
  8.5 使用介面
  8.6 實現io.Writer介面
  8.7 多個介面
  8.8 斷言介面實現
  8.9 空介面
    8.9.1 any關鍵字
    8.9.2 空介面的問題
    8.9.3 使用空介面
  8.10 定義介面
    8.  10.1 定義Model介面
    8.  10.2 實現介面
  8.11 嵌入介面
  8.12 類型斷言
    8.12.1 對斷言進行斷言
    8.12.2 斷言具體類型
  8.13 通過switch語句進行斷言
    8.13.1 捕獲switch語句中的類型斷言結果
    8.13.2 注意case子句的順序
  8.14 使用斷言
    8.14.1 定義回調介面
    8.14.2 代碼拆解分析
  8.15 本章小結

第9章 錯誤
  9.1 錯誤作為值
    9.1.1 error介面
    9.1.2 處理錯誤
    9.1.3 使用錯誤
  9.2 panic
    9.2.1 引發panic
    9.2.2 從panic狀態恢復
    9.2.3 捕獲並返回panic值
  9.3 不要主動拋出panic
    9.3.1 檢查nil
    9.3.2 創建map
    9.3.3 指針
    9.3.4 介面
    9.3.5 函數
    9.3.6 類型斷言
    9.3.7 數組/切片的索引
  9.4 自定義錯誤
    9.4.1 標準錯誤
    9.4.2 實現自定義錯誤
  9.5 包裝錯誤和解包裝錯誤
    9.5.1 包裝錯誤
    9.5.2 解包裝錯誤
    9.5.3 解包裝自定義錯誤
    9.5.4 包裝或者不包裝
  9.6 errors.As和errors.Is函數
    9.6.1 As函數
    9.6.2 Is函數
  9.7 棧跟蹤信息
  9.8 本章小結
第10章 泛型
  10.1 什麼是泛型
    10.1.1 介面存在的問題
    10.1.2 類型約束
    10.1.3 多重泛型類型
    10.1.4 實例化泛型函數
    10.1.5 定義約束
    10.1.6 多類型約束
    10.1.7 底層類型約束
    10.1.8 constraints包
    10.1.9 類型斷言
    10.1.10 混合使用方法約束和類型約束
    10.1.11 泛型類型
  10.2 本章小結
第11章 通道
  11.1 併發和並行
    11.1.1 併發不等於並行
    11.1.2 理解併發
  11.2 Go語言中的併發模型
    11.2.1 goroutine

    11.2.2 goroutine的內存
    11.2.3 Go調度器
    11.2.4 工作共享和竊取
    11.2.5 不要擔心調度器
    11.2.6 goroutine示例
  11.3 使用通道通信
    11.3.1 什麼是通道
    11.3.2 了解通道阻塞/解除阻塞
    11.3.3 創建通道
    11.3.4 發送和接收值
    11.3.5 一個簡單的通道示例
    11.3.6 在通道上使用range
    11.3.7 使用select語句監聽通道
    11.3.8 使用select語句
    11.3.9 通道不是消息隊列
  11.4 單向通道
  11.5 關閉通道
    11.5.1 在讀取消息時檢測關閉的通道
    11.5.2 從已關閉的通道中讀取數據時返回零值
    11.5.3 關閉一個已經關閉的通道
    11.5.4 向已關閉通道中寫入數據
  11.6 帶緩衝的通道
    11.6.1 簡單的帶緩衝的通道示例
    11.6.2 從關閉的帶緩衝的通道中讀取消息
  11.7 使用通道捕獲系統信號
    11.7.1 os/signal包
    11.7.2 實現優雅地關閉
    11.7.3 監聽系統信號
    11.7.4 監聽關閉確認消息
    11.7.5 超時無響應關閉
  11.8 本章小結
第12章 Context
  12.1 context.Context介面
    12.1.1 Context的Deadline方法
    12.1.2 Context的Done方法
    12.1.3 Context的Err方法
    12.1.4 Context的Value方法
    12.1.5 輔助函數
    12.1.6 初始Context
    12.1.7 默認實現
  12.2 Context規則
  12.3 Context節點層級
    12.3.1 理解節點層級
    12.3.2 用Context值包裝
    12.3.3 接續Context節點
  12.4 Context傳值
    12.4.1 理解Context傳值
    12.4.2 鍵解析
  12.5 字元串作為鍵存在的問題
    12.5.1 鍵衝突

    12.5.2 自定義字元串鍵類型
  12.6 保護Context中的鍵和值
  12.7 用Context傳播取消事件
    12.7.1 創建可取消的Context
    12.7.2 取消Context
    12.7.3 監聽取消確認
  12.8 超時和截止時間
    12.8.1 在指定時間點取消
    12.8.2 一段時間后取消
  12.9 Context錯誤
    12.9.1 Context取消錯誤
    12.9.2 超出截止時間錯誤
  12.10 使用Context監聽系統信號
  12.11 本章小結
第13章 同步
  13.1 使用WaitGroup等待goroutine
    13.1.1 問題
    13.1.2 使用WaitGroup
    13.1.3 Wait方法
    13.1.4 Add方法
    13.1.5 Done方法
    13.1.6 關於WaitGroup的小結
  13.2 使用errgroup.Group進行錯誤管理
    13.2.1 問題
    13.2.2 errgroup.Group類型
    13.2.3 監聽errgroup.Group類型的取消
    13.2.4 關於errgroup.Group類型的小結
  13.3 數據競爭
    13.3.1 競爭檢測器
    13.3.2 大多數,但不是全部
    13.3.3 關於競爭檢測器的小結
  13.4 使用互斥鎖同步訪問
    13.4.1 sync.Locker介面
    13.4.2 使用互斥鎖
    13.4.3 讀寫互斥鎖
    13.4.4 不當使用
    13.4.5 有關讀/寫互斥鎖的小結
  13.5 僅執行一次任務
    13.5.1 問題
    13.5.2 實現一次性操作
    13.5.3 使用Once關閉通道
  13.6 本章小結
第14章 使用文件
  14.1 目錄項和文件信息
    14.1.1 讀取目錄
    14.1.2 fs.FileInfo介面
    14.1.3 獲取文件狀態
  14.2 遍歷目錄
  14.3 跳過目錄和文件
  14.4 創建目錄和子目錄

  14.5 文件路徑輔助函數
    14.5.1 獲取文件的擴展名
    14.5.2 獲取文件所在的目錄
    14.5.3 獲取文件或目錄的名字
    14.5.4 使用文件路徑輔助函數
    14.5.5 檢查錯誤
  14.6 創建多個目錄
  14.7 創建文件
  14.8 修復遍歷測試
  14.9 向文件中追加內容
  14.10 讀文件
  14.11 注意Windows系統
  14.12 fs包
    14.12.1 fs.FS介面
    14.12.2 fs.File介面
  14.13 使用fs.FS介面
  14.14 模擬文件系統
  14.15 嵌入文件
    14.15.1 使用嵌入文件
    14.15.2 將文件嵌入二進位文件中
    14.15.3 修改嵌入的文件
    14.15.4 將文件作為string或者byte切片嵌入
  14.16 本章小結

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032