2016-05-23 4 views
0

Ich versuche, eine YAML-Konfigurationsdatei mit Viper (see viper docs) zu lesen. Aber ich kann keine Möglichkeit sehen, die Reihenfolge der Kartenwerte unter den Ausgabetypen zu lesen. Ich habe versucht, die verschiedenen Get_ Methoden , aber keiner scheint dies zu unterstützen.viper yaml config Sequenz

remote: 
    host: http://localhost/ 
    user: admin 
    password: changeit 

mapping: 
    source-project-key: IT 
    remote-project-key: SCRUM 

issue-types: 
    - source-type: Incident 
    remote-type: Task 
    - source-type: Service Request 
    remote-type: Task 
    - source-type: Change 
    remote-type: Story 
    - source-type: Problem 
    remote-type: Task 

Ich möchte in der Lage sein, über die Abfolge der Karte iterieren [strings]

Antwort

1

Wenn Sie die verschiedenen Get Methoden genau hinsehen, um verfügbar, werden Sie sehen, dass die Rückgabetypen sind string, []string, map[string]interface{}, map[string]string und map[string][]string.

Der Typ des mit "Issue-Typen" verknüpften Werts ist jedoch []map[string]string. Der einzige Weg, um diese Daten zu erhalten, ist durch die Get Methode und Verwendung von Typ Assertions.

Jetzt erzeugt der folgende Code den entsprechenden Typ issue_types, der []map[string]string ist.

Beachten Sie, dass ich keine Sicherheitsüberprüfung durchgeführt habe, um den Code zu verkleinern. Die korrekte Art, die Typbestätigung auszuführen, ist jedoch:

var i interface{} = "42" 
str, ok := i.(string) 
if !ok { 
    // A problem occurred, do something 
}