golang 配置檔案解析神器 viper

2022-07-03 08:03:12 字數 2070 閱讀 9760

安裝方式:go get github.com/spf13/viper

viper是乙個十分強大的配置檔案解析工具,具有以下特點

另外需要注意的是,viper對配置中的key是大小寫不敏感的

下面我以yaml格式的配置檔案為例,介紹viper的用法,其他跟多的用法請見官網

乙個好的專案應該把配置檔案分成兩份,乙份存放不敏感資訊(比如專案執行埠),乙份存放敏感資訊(比如資料庫密碼),下面兩個配置檔案用作舉例

public configconfig/config/config.yaml

timestamp: "2018-07-16 10:23:19"

username: "horika"

basicinfo:

realname: "harry"

age: "18"

language:

- "golang"

- "python"

- "c++"

married: false

hobby:

sport:

- "lure"

- "pingpong"

music:

- "bohemian rhapsody"

luckynumber: 22

secret configconfig/secret/secret.yaml

redis:

admin:

addr: "127.0.0.1:6379"

password: ""

db: 0

mysql:

driver: "mysql"

uri:

"root:123456@tcp(localhost:3306)/user?charset=utf8&parsetime=true&loc=local&multistatements=true"

jwt:

secret: "horika@^-^@kainhuck"

示例**

var config *viper.viper

// init 初始化配置檔案解析

func init()

說明

上面演示的只是一種讀取方式,viper還有其他的讀取方式

var config *viper.viper

// init 初始化配置檔案解析

func init()

說明

從io流中讀取配置檔案

var config *viper.viper

// init 初始化配置檔案解析

func init()

說明

viper讀取配置檔案就是各種get

示例

fmt.println(config.get("username"))

fmt.println(config.get("mysql"))

fmt.println(config.gettime("timestamp"))

viper作為乙個優秀的配置檔案解析工具,他支援將配置資訊序列化為結構體物件

// init 初始化配置檔案解析

func init()

type basicinfo struct

type hobby struct

type admin struct

type redis struct

type mysql struct

type jwt struct

type totalconfig struct

func main()

golang中解析yaml配置檔案

首先看乙個簡單的例子,現在我們有乙個config.yaml的配置檔案,內容為 username raily password 123a那麼我們可以像下邊這樣解析 type config struct var databaseconfig config 解析函式 func load path stri...

golang讀取配置檔案

在專案中往往將一些配置資訊放到配置檔案中,這樣在不同的執行環境中,只需修改配置檔案即可。以下介紹兩種通過第三方包獲取配置檔案的方式 一 通過gopkg.in ini.v1 go get gopkg.in ini.v11.配置檔案 test.conf mqtt mqtt hostname 127.0....

golang配置檔案熱更新

配置檔案熱更新是伺服器程式的乙個基本功能,通過熱更新可以不停機調整程式的配置,特別是在生產環境可以提供極大的便利,比如發現log打得太多了可以動態調高日誌等級,業務邏輯引數變化,甚至某個功能模組的開關等都可以動態調整。每種語言都有自己的熱更新實現方式,在golang裡面我看到了有人採用了一種錯誤的實...