[英]GoLang yaml unmarshal - updating structs
我使用https://github.com/go-yaml/yaml庫來解析 yaml 設置文件。 設置結構需要稍微改變。
當前結構是
type Settings struct{
Hosts []string
}
新結構應該是
type Host struct {
URL string
Name string
}
type Settings struct{
Hosts []Host
}
當前 yaml:
hosts:
-http://server1.com
-http://server2.com
新的 yaml 將
hosts:
- url:http://server1.com
name:s1
- url:http://server2.com
name:s2
我不想強迫用戶使用 go 並在更改實施后更新 yaml 文件。 如何解析兩個文件(新舊)? 例如,如果收到舊文件,我希望名稱字段為空。 如果收到新文件,那么我將接受提供的任何內容。
謝謝!
正確的方法是發布您的 package v2以獲得Settings
的新結構。 v2 的用戶可以使用新結構,現有用戶可以繼續使用 package v1 的舊結構。
如果這是不可能的,那么另一種方法是將設置聲明為空接口數組。
type Settings struct{
Hosts []interface{}
}
yaml 將解析 ok,您將在 Hosts 字段中獲取數據
string
數組map[string]interface{}
數組需要類型斷言來將其解析為新結構或舊結構。
請注意,Hosts 的類型將始終為[]interface{}
,它是需要聲明其類型以填充字段的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.