很高興今年錄取 Modernweb 講師,又有機會去宣傳 Go 語言,這次的議程最主要跟大家介紹 Go 專案的目錄該如何設計,一個基本的專案該需要有哪些功能,以及如何實現。大家剛入門 Go 時,肯定會開始找是否有一套 Web Framework 可以參考實踐,可惜的是,在 Go 語言沒有定義任何的目錄結構,所有的結構都可以根據團隊的狀況而有所改變,而這邊我想強調的是如果能讓團隊看到結構後,一目瞭然知道什麼功能該放哪個目錄,或什麼目錄內大概有什麼功能,那其實就夠了。看了許多開源專案,每個設計方式都是不同,但是當你要找什麼功能時,其實從根目錄就可以很清楚的知道要進入哪個地方可以找到您想要的功能及程式碼。這次在 Moderweb 上面的議題,就是分享我在開源專案所使用的目錄結構,以及結構內都放哪些必要的功能。
Go 語言基礎實踐
除了講 Go 的目錄架構外,我還會提到很多小技巧及功能,讓大家可以知道更多相關要入門的 Go 基礎知識,底下是大致上的功能清單:
- 如何使用 Makefile 管理 GO 專案
- 如何用 docker-compose 架設相關服務
- Go module proxy 介紹及部署
- 專案版本號該如何控制
- 如何在 Go 語言嵌入靜態檔案
- 如何實現 304 NOT Modified 功能
- 簡易的 Healthy check API
- Command Line 撰寫
- 如何實現讀取
.env
及環境變數 - 整合 Prometheus 搭配 Token 驗證
- 如何測試 Docker 容器是否正確
- 實作 custome errors
- 用 yaml 來產生真實 DB 資料來測試 (支援 SQLite, MySQL 或 Postgres)
- 透過 TestMain 來實現 setup 或 teardown 功能
- 用 Go 語言 Build Tags 支援 SQLite
- 介紹如何撰寫 Go 語言測試
最後來推廣我的兩門課程,由於 modernweb 不會提供會後錄影,所以我打算把上面的部分在製作影片放到 Udemy 平台給學生學習。
- Go 語言實戰課程: http://bit.ly/golang-2019
- Drone CI/CD 自動化課程: http://bit.ly/drone-2019