使用Golang Viper 讀取地圖切片的技巧
在本文中,我們將提供使用Golang Viper 讀取地圖切片的見解Go中流行的Viper 庫。
如上所述,您正在使用 Viper 來管理設定文件,並且您有一個YAML 設定與共用的類似。您的目標是閱讀「群組」選項,該選項可以包含多個群組及其各自的設定。
理解陷阱
使用以下命令閱讀「群組」選項時viper.GetStringMap(),您遇到了問題。這是因為「群組」選項是地圖的一部分,而不是單一地圖。 Viper 無法自動推斷這一點並傳回錯誤。
解決方案:自訂解組
要讀取地圖切片,我們建議建立一個自訂配置結構來表示您的所需的資料結構。在您的情況下,您可以定義配置、群組和目標的結構,如提供的解決方案中所示。
定義這些結構後,您可以使用 viper.Unmarshal() 將組態解組到您的自訂結構。這將自動處理地圖切片並相應地填充您的結構。
範例程式碼:
type config struct { interval int `mapstructure:"interval"` statsdPrefix string `mapstructure:"statsd_prefix"` groups []group `mapstructure:"group"` } type group struct { group string `mapstructure:"group"` targetPrefix string `mapstructure:"target_prefix"` targets []target `mapstructure:"target"` } type target struct { target string `mapstructure:"target"` hosts []string `mapstructure:"hosts"` } var C config err := viper.Unmarshal(&C) if err != nil { panic(fmt.Errorf("unable to decode into struct, %v", err)) }
遵循此方法,您可以輕鬆地讀取您的切片使用 Viper 繪製地圖。
以上是如何使用 Go 的 Viper 函式庫有效率地從 YAML 設定檔中讀取地圖片段?的詳細內容。更多資訊請關注PHP中文網其他相關文章!