使用 Golang Viper 讀取地圖切片
Viper 庫是讀取和管理 Go 中配置資料的優秀工具。用戶面臨的一個常見挑戰是從設定檔中讀取地圖切片。
考慮以下HCL 設定檔:
interval = 10 statsd_prefix = "pinger" group "dns" { target_prefix = "ping" target "dns" { hosts = [ "dnsserver1", "dnsserver2" ] } }
要使用Viper 讀取此設定文件,您可以使用以下程式碼:
type config struct { Interval int `mapstructure:"interval"` StatsdPrefix string `mapstructure:"statsd_prefix"` Groups []group `mapstructure:"group"` } type group struct { Name string `mapstructure:"group"` TargetPrefix string `mapstructure:"target_prefix"` Targets []target `mapstructure:"target"` } type target struct { Name string `mapstructure:"target"` Hosts []string `mapstructure:"hosts"` } func main() { viper.SetConfigName("config") viper.AddConfigPath(".") err := viper.ReadInConfig() if err != nil { panic(err) } var c config err = viper.Unmarshal(&c) if err != nil { panic(err) } fmt.Println(c.Interval) fmt.Println(c.StatsdPrefix) fmt.Println("Groups:") for _, group := range c.Groups { fmt.Println("- Name:", group.Name) fmt.Println(" - Prefix:", group.TargetPrefix) fmt.Println(" - Targets:") for _, target := range group.Targets { fmt.Println(" - Name:", target.Name) fmt.Println(" - Hosts:") for _, host := range target.Hosts { fmt.Println(" - ", host) } } } }
透過定義Go 結構來定義Go 結構來匹配配置文件,Viper 可以自動解碼配置資料並將其映射到正確的類型。這簡化了複雜資料結構的處理,並提供了一種類型安全的方式來存取配置值。
以上是如何使用 Golang Viper 從設定檔中讀取地圖切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!