聯繫我們

課程簡介

1. Go語言簡介

  • 什麼是 Go (Golang)?
  • Go 的歷史與設計理念
  • Go 作為 Web 與系統編程語言
  • 主要特性:
    • 靜態類型
    • 簡單與可讀性
    • 快速編譯
    • 內建併發
    • 垃圾回收
    • 跨平台編譯
  • Go 的常見應用場景
  • Go 的優勢與限制
  • Go 與 C/C++、JavaScript、Ruby、Python 及 Java 的比較
  • 了解 Go 生態系統
  • Go 標準函式庫概覽
  • Go 模組與依賴管理
  • Go 應用程式的組成結構
  • 實務操作: 檢視並執行簡單的 Go 程式

2. 設定Go開發環境

  • 安裝 Go
  • 了解 Go 工具鏈
  • 設定環境變數
  • 選擇 IDE 或程式碼編輯器
  • 使用命令列操作 Go
  • 建立 Go 工作區
  • 理解 Go 專案結構
  • 使用 Go Modules 初始化專案
  • 使用 go mod init
  • 使用 go get 管理依賴
  • 更新與檢視依賴
  • 使用 gofmt 格式化原始碼
  • 使用 go run 執行程式
  • 使用 go build 建置應用程式
  • 安裝 Go 應用程式
  • 交叉編譯應用程式
  • 實務操作: 在容器中建立並設定 Go 專案

3. Go變數、常數與型別

  • 宣告變數
  • 顯式與推斷型別
  • 簡短變數宣告
  • 常數
  • 零值
  • 變數的作用域與生命週期
  • 基本資料型別:
    • 整數
    • 浮點數
    • 複數
    • 布林值
    • 字串
  • 型別轉換
  • 處理 Unicode 與 UTF-8
  • 符文(Runes)與位元組(Bytes)
  • 多變數賦值
  • 理解型別安全
  • 演習: 建構小型命令列資料處理程式

4. 運算子與表達式

  • 算術運算子
  • 比較運算子
  • 邏輯運算子
  • 賦值運算子
  • 遞增與遞減
  • 運算子優先順序
  • 處理整數與浮點數計算
  • 避免常見型別轉換錯誤
  • 演習: 實作計算與驗證邏輯

5. 日期、時間與格式化

  • 使用 time 套件
  • 建立與操作日期
  • 獲取當前時間
  • 時區與地點
  • 解析日期與時間
  • 格式化日期與時間
  • 計算持續時間
  • 處理 Unix 時間戳記
  • 處理逾時
  • 演習: 為應用程式新增時間戳記與持續時間計算

6. 陣列、切片、映射與結構體

陣列

  • 宣告陣列
  • 初始化陣列
  • 遍歷陣列
  • 多維陣列

切片

  • 理解切片與陣列的差異
  • 建立切片
  • 附加元素
  • 複製切片
  • 切片長度與容量
  • 切片切分
  • 切片常見陷阱

映射

  • 建立映射
  • 新增與移除項目
  • 檢查鍵是否存在
  • 遍歷映射
  • 包含複雜資料的映射

結構體

  • 定義結構

  • 結構欄位

  • 初始化結構體

  • 巢狀結構體

  • 匿名結構體

  • 結構體方法

  • JSON 結構標籤

  • 實務操作: 使用結構體、切片與映射對用戶、產品及應用資料建模

7. 條件邏輯與迴圈

  • if 陳述式
  • elseelse if
  • 條件內的變數宣告
  • for 迴圈
  • 無限迴圈
  • 迴圈條件
  • breakcontinue
  • 使用 range 進行迭代
  • 巢狀迴圈
  • switch 陳述式
  • 基於表達式的 switch
  • 多個 case
  • 預設 case
  • 型別 switch
  • 演習: 實作應用程式驗證與處理邏輯

8. 函式

  • 定義函式
  • 函式參數
  • 回傳值
  • 多個回傳值
  • 具名回傳值
  • 可變參數函式
  • 匿名函式
  • 函式值
  • 閉包
  • 遞迴
  • 傳遞函式作為參數
  • 回傳錯誤的函式
  • 設計小型可重用函式
  • 演習: 將現有程式碼重構為可重用函式

9. 指標與記憶體概念

  • 什麼是指標?
  • 取地址與解引用運算子
  • 指標與函式參數
  • 指標接收者
  • 指向結構體的指標
  • Nil 指標
  • 何時使用指標
  • 值語義與引用語義
  • 理解 Go 的記憶體管理與垃圾回收
  • 常見的指標錯誤
  • 實務操作: 使用指標修改應用程式資料

10. 在Go中建立Web應用程式

  • Go 的 Web 功能概覽
  • 介紹 net/http 套件
  • 建立 HTTP 伺服器
  • HTTP 請求與回應
  • HTTP 方法
  • 請求 URL 與查詢參數
  • HTTP 標頭
  • HTTP 狀態碼
  • 路由基礎
  • 建立處理器
  • 處理表單資料
  • 提供靜態檔案
  • 使用 HTML 模板
  • 模板變數與控制結構
  • Web 應用程式結構化
  • 實務操作: 建構基礎的 Go Web 伺服器

11. 建構RESTful Web服務

  • REST 架構基礎
  • 設計 API 端點
  • GET、POST、PUT、PATCH 與 DELETE
  • 使用 JSON
  • JSON 編碼與解碼
  • 請求驗證
  • HTTP 狀態碼
  • 錯誤回應
  • 查詢參數與路徑參數
  • API 回應結構
  • 分離處理器與商業邏輯
  • 實務操作: 建構 CRUD REST API

12. Go執行時、編譯與專案建置

  • 了解 Go 編譯器
  • Go 的建置流程
  • go run
  • go build
  • go install
  • go test
  • 建置旗標
  • 特定環境設定
  • 為不同作業系統與架構建置
  • 產出獨立二進位檔
  • 管理應用程式設定
  • 演習: 將應用程式編譯為多平台版本

13. 處理檔案與Web

  • 開啟與關閉檔案
  • 讀取檔案
  • 寫入檔案
  • 建立目錄
  • 檔案中繼資料
  • 緩衝 I/O
  • 處理串流
  • 讀取與寫入 JSON 檔案
  • HTTP 客戶端
  • 發送出站 HTTP 請求
  • 處理 HTTP 客戶端錯誤
  • 逾時與取消
  • 處理 API 回應
  • 實務操作: 從外部 API 擷取資料並本地持久化

14. 錯誤處理與除錯

  • Go 的錯誤處理方式
  • 從函式回傳錯誤
  • 檢查錯誤
  • 建立自訂錯誤
  • 包裝錯誤
  • 為錯誤新增上下文
  • errors.Iserrors.As
  • Panic 與 Recovery
  • 何時使用 panic
  • 除錯常見的 Go 問題
  • 記錄應用程式活動
  • 使用 Go 除錯工具
  • 演習: 診斷並修復刻意引入的應用程式錯誤

15. 介面與抽象

  • 什麼是介面?
  • 隱式介面實作
  • 定義介面
  • 介面值
  • 空介面 / any
  • 型別斷言
  • 型別 switch
  • 指標實作與值實作
  • 設計小型介面
  • 依賴反轉
  • 使用介面進行測試
  • 降低應用程式耦合
  • 實務操作: 在樣本 Web 應用程式中引入介面

16. 套件與專案組織

  • 建立套件
  • 套件命名慣例
  • 匯出與非匯出標識符
  • 導入套件
  • 套件初始化
  • 組織應用程式層級
  • 內部套件
  • 使用 Go Modules 管理依賴
  • 語義化版本控制
  • 使用第三方套件
  • 避免循環依賴
  • 設計可維護的 Go 專案
  • 演習: 將應用程式重構為獨立套件

17. 使用Goroutines進行併發

  • 什麼是併發?
  • Goroutines
  • 啟動 goroutines
  • 理解輕量級併發執行
  • 同步挑戰
  • 共享狀態
  • 競態條件
  • 使用 sync.WaitGroup
  • 互斥鎖與讀寫互斥鎖
  • 原子操作
  • 實務操作: 將順序任務轉換為併發處理

18. 通道

  • 理解通道
  • 發送與接收值
  • 緩衝與無緩衝通道
  • 阻塞行為
  • 關閉通道
  • 遍歷通道
  • 方向性通道
  • 基於通道的通訊
  • Select 陳述式
  • 逾時與取消
  • 工作者池模式
  • 生產者/消費者模式
  • 實務操作: 建構併發工作者系統

19. 上下文與請求管理

  • 為什麼上下文在 Web 應用程式中很重要
  • context.Context
  • 請求範圍的上下文
  • 取消
  • 截止期限
  • 逾時
  • 在應用程式層級傳播上下文
  • 取消資料庫或 HTTP 操作
  • 避免上下文誤用
  • 演習: 為 Web 應用程式新增請求取消與逾時

20. 測試Go應用程式

  • 為什麼自動化測試很重要
  • 撰寫單元測試
  • testing 套件
  • 測試函式
  • 測試命名慣例
  • 表格驅動測試
  • 測試錯誤
  • 測試 HTTP 處理器
  • HTTP 測試伺服器
  • 測試裝置
  • 測試覆蓋率
  • 基準測試
  • 範例測試
  • 使用模擬或偽代碼測試介面
  • 實務操作: 為樣本應用程式建立測試套件

21. 效能優化

  • 理解 Go 應用程式效能
  • 識別瓶頸
  • CPU 與記憶體效能
  • 高效能資料結構
  • 減少不必要的記憶體分配
  • 字串、位元組與緩衝區
  • Goroutine 管理
  • 避免過度併發
  • 快取策略
  • 資料庫與網路考量
  • 應用程式分析
  • 基準測試與效能測試
  • 使用 Go 的分析工具
  • 演習: 分析並優化一個刻意低效的應用程式

22. 安全性與健壯Web應用程式實務

  • 驗證用戶輸入
  • 安全處理 HTTP 請求
  • 防止常見 Web 漏洞
  • 安全的錯誤處理
  • 身份驗證與授權概念
  • 管理祕密與設定
  • 安全的 HTTP 通訊
  • 避免在日誌中記錄敏感資訊
  • 依賴管理與更新
  • 資源限制與請求逾時
  • 演習: 審查並強化樣本 API

23. 應用程式記錄與可觀察性

  • 記錄基礎
  • 結構化記錄
  • 日誌級別
  • 請求記錄
  • 錯誤記錄
  • 關聯性與請求 ID
  • 監控應用程式行為
  • 基本指標
  • 健康檢查端點
  • 診斷生產環境問題
  • 實務操作: 新增結構化記錄與健康檢查

24. 容器化Go應用程式

  • 為什麼使用容器?
  • Go 應用程式與容器化
  • 撰寫 Dockerfile
  • 多階段建置
  • 建構最小執行時映像
  • 透過環境變數管理設定
  • 容器網路
  • 暴露應用程式端口
  • 在容器中運行應用程式
  • 測試容器化應用程式
  • 實務操作: 將樣本 Go 應用程式打包為生產就緒的容器

25. 部署

  • 為生產環境準備應用程式
  • 建置生產二進位檔
  • 環境設定
  • 基於容器的部署
  • 部署架構
  • 反向代理
  • HTTPS/TLS 考量
  • 應用程式健康檢查
  • 優雅關閉
  • 處理作業系統訊號
  • 擴展 Go Web 應用程式
  • 水平與垂直擴展
  • 基本部署故障排除
  • 實務操作: 部署樣本 Web 應用程式

26. 綜合專案:完整Go Web應用程式

學員將整合各概念,開發一個完整的應用程式。

專案可包含:

  • 使用 Go Modules 初始化專案
  • 套件組織
  • HTTP 路由
  • REST API 端點
  • JSON 請求與回應處理
  • 輸入驗證
  • 錯誤處理
  • 介面
  • 併發處理
  • 外部 API 通訊
  • 檔案或資料庫持久化
  • 自動化測試
  • 記錄
  • 效能考量
  • 容器化
  • 生產環境設定
  • 部署

27. 回顧與最佳實務

  • 回顧 Go 核心語法
  • Go 編碼慣例
  • 撰寫慣用 Go 程式碼
  • 保持程式碼簡單
  • 有效的套件設計
  • 錯誤處理最佳實務
  • 介面設計原則
  • 併發最佳實務
  • 測試策略
  • 效能考量
  • 可維護性與可讀性
  • 新手 Go 開發人員常見錯誤
  • 繼續 Go 開發的建議方法

28. 結論

  • 關鍵概念回顧
  • 完成 Web 應用程式回顧
  • 提問與討論
  • 排除常見真實世界情境故障
  • Go 開發的後續步驟建議
  • 更多 Go 函式庫與生態系統資源
  • 建構生產級 Go 服務的更多機會

最低要求

  • 具備一般編程原則的基礎理解

適合對象

  • 開發人員
 28 小時

人數


每位參與者的報價

客戶評論 (5)

即將到來的課程

課程分類