Im Yaml MapSliceデータ構造の使い方が混乱しています。そのここhttps://sourcegraph.com/go/gopkg.in/yaml.v2/-/MapSliceから私はmapsliceの種類にアンマーシャリングするために管理していますが1つのマップを逃したので、あなたは、あなたの都市の種類を変更する必要がどのように自分自身の構造体にマップするYaml MapSlice:マーシャルまたはアンマーシャリング時にシーケンスを保存する
var data = `
id:
id-jakut:
en:
name: North Jakarta City
label: North Jakarta
id:
name: Kota Jakarta Utara
label: Jakarta Utara
id-jaksel:
en:
name: South Jakarta City
label: South Jakarta
id:
name: Kota Jakarta Selatan
label: Jakarta Selatan
tw:
tw-tp:
en:
name: Taipei City
label: Taipei
zh-TW:
name: 台北
label: 台北市
tw-ntp:
en:
name: New Taipei City
label: New Taipei City
zh-TW:
name: 新北市
label: 新北市
`
type cityLocale struct {
Name string `yaml:"name,flow"`
Label string `yaml:"label,flow"`
}
type cityLocales map[string]cityLocale
type cities map[string]cityLocales
type countryCities map[string]cities
func main() {
m := yaml.MapSlice{}
err := yaml.Unmarshal([]byte(data), &m)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("MAPSLICE==>%+v\n\n", m)
t := countryCities{}
err = yaml.Unmarshal([]byte(data), &t)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("NORMAL==>%+v\n", t["tw"])
}
あなたは順序を保持する方法を尋ねていますが、構造は順序付けられていません。あなたはMapSliceを何のために使いたいですか?あなたの都市構造はYAMLとは違う構造なので機能しません。 – JimB
Okie私は構造体を今すぐ固定しました。はい、シーケンスを保持する方法。 mをtや他の方法でマップする必要がありますか? –