在建構web-server時,總會需要去指定各種參數,像是mysql的位置,redis的位置,server要開哪些通訊埠(port)給使用者呼叫等等,這些參數的導入會是一個很麻煩的問題。
以上圖來說,光是mysql master跟slave的設定檔就有六個,加上port跟redis相關的設定,就會變得非常複雜。
如果只有一個環境的話,寫死在程式碼內也是一個選擇,不過當要切換環境,或是要搬移到新的機器上時,就會需要在修改程式碼,並重新編譯。
因此在這邊會建議將參數寫成設定檔,依照不同環境來切換,這樣要轉移到新的環境上,或是要切換資料庫來源也比較方便。
在管理設定檔時,有許多方式可以選擇,在這邊先以將設定檔放入環境變數的方式來說明。
環境變數,顧名思義是你所使用的環境當中,舉例來說,當你下
go env
這時出現的GOOS或是GOPATH都是環境變數的一種(如下圖)
那麼,我們就可以將我們需要的參數放入環境變數,並透過go內的
os.Getenv(key string)
來取得參數
以上圖來說,這段程式碼就會取得環境變數內名為MYSQL_ADDR_MASTER的值,並將其值給予config.MysqlMaster
這樣就可以透過依照各種不同的環境來設定不同的參數了。
下一章會介紹另一個用來處理設定檔的套件,其名為Viper。