配置文件的實現依賴包:
```
go get github.com/spf13/cast
```
這個已經默認集成到項目中,我們可以在`*pkg/config/config.go*`文件中查看詳細的配置信息。
## 初始化配置
在`main.go`中的 `init()`實現配置的初始化
```go
import btsConfig "gohub/config"
func init() {
// 加載 config 目錄下的配置信息
btsConfig.Initialize()
}
```
作為一個`Go`中的`init`函數有以下邏輯:
* 如果一個包定義了 `init` 函數,`Go` 運行時會負責在該包初始化時調用它的 init 函數;
* `init` 不能被顯式調用 ,否則會在編譯期間報錯;
* 多個包的情況,在初始化該包時,`Go` 運行時會按照一定的次序逐一順序地調用該包的 `init` 函數;
* 每個 `init` 函數在整個 `Go` 程序生命周期內僅會被執行一次;
* 一般來說,先被傳遞給 `Go` 編譯器的源文件中的 `init` 函數先被執行(`main.go` 作為起點);
* 同一個源文件中的多個` init` 函數按聲明順序依次執行。
下面一張圖很好了說明了這個執行邏輯:

更加簡單的說:
1. 如果一個包導入了其他包,則首先初始化導入的包。
2. 然后初始化當前包的常量。
3. 接下來初始化當前包的變量。
4. 最后,調用當前包的`init()`函數。
## 環境配置場景
一般來講,項目會運行在多個環境下,例如:
* local —— 本地開發環境(我的機器上、其他開發同事的機器上)
* testing —— 自動化測試環境
* stage —— 接近線上環境的測試環境,方便其他成員訪問和測試(編輯人員、產品經理、項目經理)
* production —— 線上生產環境
啟動示例: `./gohub serve --env=local`
- 序言
- 基礎
- 安裝GoHub
- 目錄結構
- 開發規范
- 部署項目
- 架構
- 架構總覽
- 生命周期
- 配置
- 配置介紹
- 配置目錄
- 配置格式
- 配置加載
- 讀取配置
- 動態配置
- 環境變量配置
- 路由
- 路由模式
- 路由定義
- 路由參數
- 路由分組
- 路由限流
- 路由拆分
- 控制器
- 控制定義
- 控制器初始化
- 中間件
- Make創建控制器
- 請求
- 請求信息
- 數據庫
- 連接數據庫
- 基本使用
- Make創建模型
- 日志
- 介紹
- 日志驅動
- 日志寫入
- HTTP日志
- 數據庫請求日志
- 錯誤和調試
- Debuger調試器
- 驗證
- 驗證器
- 驗證規則
- Make創建驗證器
- 雜項
- 緩存
- 分頁
- 驗證碼
- CURL請求
- 命令行
- 基礎知識
- console 包
- Cobra 基礎
- 命令行模式
- 附錄
- 配置參考
- 第三方依賴庫