感謝您提交詢問!我們的一位團隊成員將在短時間內與您聯繫。
感謝您提交預訂!我們的一位團隊成員將在短時間內與您聯繫。
課程簡介
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陳述式else與else if- 條件內的變數宣告
for迴圈- 無限迴圈
- 迴圈條件
break與continue- 使用
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 rungo buildgo installgo test- 建置旗標
- 特定環境設定
- 為不同作業系統與架構建置
- 產出獨立二進位檔
- 管理應用程式設定
- 演習: 將應用程式編譯為多平台版本
13. 處理檔案與Web
- 開啟與關閉檔案
- 讀取檔案
- 寫入檔案
- 建立目錄
- 檔案中繼資料
- 緩衝 I/O
- 處理串流
- 讀取與寫入 JSON 檔案
- HTTP 客戶端
- 發送出站 HTTP 請求
- 處理 HTTP 客戶端錯誤
- 逾時與取消
- 處理 API 回應
- 實務操作: 從外部 API 擷取資料並本地持久化
14. 錯誤處理與除錯
- Go 的錯誤處理方式
- 從函式回傳錯誤
- 檢查錯誤
- 建立自訂錯誤
- 包裝錯誤
- 為錯誤新增上下文
errors.Is與errors.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)
培訓師證明了自己是該領域的專家,這一點我從不認爲理所當然。他提供了非常有用的行業標準見解。
Giuseppe
課程 - Learning Go Programming
機器翻譯
我很喜歡我們進行的實踐練習數量。我個人通過動手學習,所以Francesco提供了大量實踐練習,這非常好。我在理解幻燈片中的一些概念時遇到了困難,但當我真正動手實踐並能夠實現語言的一些關鍵特性時,這幫助我更好地理解了它。
Adam Fitzhugh - OpticoreIT
課程 - Learning Go Programming
機器翻譯
節奏適中,培訓師能夠幫助並應對稍難的問題。
Andrei Mihai - Viasat
課程 - Learning Go Programming
機器翻譯
Radu的深入知識,以及爲我量身定製的進度。
Adeel Ahmad - Coefficient Data Ltd
課程 - Learning Go Programming
機器翻譯
培訓師的靈活性。課程確實滿足了我們的特定需求。
Daniel Kurner - Daimler TSS
課程 - Learning Go Programming
機器翻譯